【问题标题】:Why do I get date does not match format error in Python Pandas?为什么我在 Python Pandas 中出现日期不匹配格式错误?
【发布时间】:2019-07-28 06:34:42
【问题描述】:

我用来分析一个只包含两列的.csv 文件:

  • 日期
  • time_taken

csv 的片段是:

date,time_taken
01-02-2019,2.3
02-02-2019,3.3
03-02-2019,2.8
04-02-2019,4.5
05-02-2019,1.2
06-02-2019,6.7

我收到了这个ValueError:

ValueError: time data 'date' does not match format '%d-%m-%Y' (match)

Python 3.6 被截断为:

import pandas as pd

transfer = pd.read_csv('tcs1_time.csv', header=None, delimiter=',')

transfer.columns = ['date', 'time_taken']

transfer['date'] = pd.to_datetime(transfer['date'], format='%d-%m-%Y')

csv 中的日期与 format 匹配,但是,我得到的是 ValueError

任何人都可以在这方面提供帮助吗?谢谢。

【问题讨论】:

  • 如果您正在读取具有标题的 csv 文件,则不应在 pd.read_csv 中使用“header=None”选项。
  • 我想我在上面的代码中做到了。
  • 我是说你应该去掉“header=None”位。您在执行代码后所做的是您正在读取文件中的第一行(日期,time_taken)作为数据框中的一行,而不是作为标题......这将引发错误,因为字符串“日期”肯定不会匹配您的日期时间格式!
  • @Chilled Geek,对不起,我误解了你,实际上它有效,这就是问题所在。我删除了 header=None 部分。
  • 没问题!乐意效劳。享受蟒蛇/熊猫!

标签: python pandas datetime valueerror string-to-datetime


【解决方案1】:

使用

进行简单修复
transfer['date1'] = pd.to_datetime(transfer['date'], format='%d-%m-%Y',errors = 'coerce')

然后使用下面检查您在列中还有哪些其他格式

transfer.loc[transfer.date1.isnull(),'date']

【讨论】:

  • 你能在我的代码中详细说明这个问题吗?这是熊猫的问题/错误还是我做错了什么,我对熊猫很陌生。谢谢
  • @DilshadAbduwali 你有一些值在日期列中没有格式='%d-%m-%Y'
  • @DilshadAbduwali 也在你的 csv 中有标题吗?如果有,请使用 pd.read_csv('tcs1_time.csv', delimiter=',')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 2019-04-05
  • 2016-04-27
  • 1970-01-01
  • 2015-02-24
  • 1970-01-01
相关资源
最近更新 更多