Datetime в Python импортирует CSV - PullRequest
0 голосов
/ 05 января 2019

Вопрос для начинающих - я пытаюсь импортировать файл CSV в python, но, похоже, возникла проблема с форматом даты

path =".csv"
file = open(path, newline='')
reader = csv.reader(file)

header = next(reader) 

data = []
for row in reader:
    #row = [Date,Open,High,Low,Close,Adj Close,Volume]
    date = datetime.strptime(row[0], '%Y-%m-%d') 
    open_price = float(row[1]) 
    high = float(row[2])
    low = float(row[3])
    close = float(row[4])
    adj_close = float(row[5])
    volume = int(row[6])

    data.append([date, open_price, high, low, close, adj_close, volume])

print(data[0])

Я получаю сообщение об ошибке

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-12-ace6c5a0e17d> in <module>
     11 for row in reader:
     12     #row = [Date,Open,High,Low,Close,Adj Close,Volume]
---> 13     date = datetime.strptime(row[0], '%Y-%m-%d')
     14     open_price = float(row[1]) # 'open' is built-in function in python
     15     high = float(row[2])

~/anaconda3/lib/python3.7/_strptime.py in _strptime_datetime(cls, data_string, format)
    575     """Return a class cls instance based on the input string and the
    576     format string."""
--> 577     tt, fraction, gmtoff_fraction = _strptime(data_string, format)
    578     tzname, gmtoff = tt[-2:]
    579     args = tt[:6] + (fraction,)

~/anaconda3/lib/python3.7/_strptime.py in _strptime(data_string, format)
    360     if len(data_string) != found.end():
    361         raise ValueError("unconverted data remains: %s" %
--> 362                           data_string[found.end():])
    363 
    364     iso_year = year = None

ValueError: unconverted data remains: ;1048.339966;1066.939941;1045.229980;1065.000000;1065.000000;1237600`enter code here`

ValueError: остаются не преобразованные данные

что это значит и как с этим справиться? спасибо.

1 Ответ

0 голосов
/ 05 января 2019

Похоже, ваш CSV использует точку с запятой вместо запятой. Это приводит к тому, что первая «ячейка» содержит данные для всех ячеек в строке, от которых разбирается анализатор даты и времени.

Вы можете исправить изменение вашего CSV-ридера на использование точек с запятой, изменив строку 3 с:

reader = csv.reader(file)

до

reader = csv.reader(file, delimiter=';')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...