【问题标题】:datetime in python importing csvpython中的日期时间导入csv
【发布时间】:2019-01-05 16:00:37
【问题描述】:

初学者问题 - 我正在尝试将 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:未转换的数据仍然存在

这是什么意思以及如何理解它?非常感谢。

【问题讨论】:

  • 我建议您使用 pandas.read_csv() 读取 csv,然后使用 pandas.to_datetime(date_columns, format='%d-%m-%Y') 您需要提供格式类型您的 csv 文件包含日期。

标签: python csv datetime


【解决方案1】:

看起来您的 CSV 实际上是使用分号而不是逗号作为分隔符。这导致第一个“单元格”包含行中所有单元格的数据,日期时间解析器正在阻塞。

您可以通过将第 3 行更改为:

reader = csv.reader(file)

reader = csv.reader(file, delimiter=';')

【讨论】:

  • 感谢 Marcus,它现在工作得非常完美 - 感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
  • 2019-06-29
  • 2023-02-18
相关资源
最近更新 更多