【发布时间】:2018-10-11 02:06:27
【问题描述】:
我正在尝试从 csv 文件中读取数据,但出现此错误:
ValueError Traceback (most recent call last)
<ipython-input-15-d27c936e2293> in <module>()
11 for row in header:
12 # row = [Date, Open, High, Low, Close, Volume, Adj. close]
---> 13 date = datetime.strptime(row[0], '%m/%d/%Y')
14 open_price = float(row[1])
15 high = float(row[2])
~/anaconda3/lib/python3.6/_strptime.py in _strptime_datetime(cls, data_string, format)
563 """Return a class cls instance based on the input string and the
564 format string."""
--> 565 tt, fraction = _strptime(data_string, format)
566 tzname, gmtoff = tt[-2:]
567 args = tt[:6] + (fraction,)
~/anaconda3/lib/python3.6/_strptime.py in _strptime(data_string, format)
360 if not found:
361 raise ValueError("time data %r does not match format %r" %
--> 362 (data_string, format))
363 if len(data_string) != found.end():
364 raise ValueError("unconverted data remains: %s" %
ValueError: time data 'D' does not match format '%m/%d/%Y'
这是我的代码:
import csv
from datetime import datetime
path ="google_stock_data.csv"
file = open (path, newline = '')
reader = csv.reader(file)
header = next (reader)
data = []
for row in header:
# row = [Date, Open, High, Low, Close, Volume, Adj. close]
date = datetime.strptime(row[0], '%m/%d/%Y')
open_price = float(row[1])
high = float(row[2])
low = float(row[3])
close = float(row[4])
volume = float(row[5])
adj_close = float(row[6])
data.append([date, open_price, high, low, close, volume, adj_close])
print(data[0])
注意:文件中的数据如下所示:
Date Open High Low Close Volume Adj Close
8/19/14 585.002622 587.342658 584.002627 586.862643 978600 586.862643
8/18/14 576.11258 584.512631 576.002598 582.162619 1284100 582.162619
8/15/14 577.862619 579.382595 570.522603 573.482626 1519100 573.482626
8/14/14 576.182596 577.902645 570.882599 574.652582 985400 574.652582
这是为什么呢?数据不是被转换为正确的类型吗?请帮忙。我该如何解决?
谢谢。
【问题讨论】:
-
你能把
google_stock_data.csv的内容发一个sn-p吗? -
日期打开高低关闭音量调关闭14年8月19日585.002622 587.342658 584.002627 586.862643 586.862643 978600 14年8月18日576.11258 584.512631 576.002598 582.162619 582.162619 1284100 14年8月15日577.862619 579.382595 570.522603 573.482626 573.482626 1519100 8 /14/14 576.182596 577.902645 570.882599 574.652582 985400 574.652582
-
for row in header循环遍历标题,而不是数据行。近距离投票是错字。 -
应该是
FileHandle = open("google_stock_data.csv", "r")for line in FileHandle:或with open("google_stock_data.csv") as FileHandle:。