时间数据与窗体不匹配

2024-04-26 13:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到以下错误:

time data '07/28/2014 18:54:55.099000' does not match format '%d/%m/%Y %H:%M:%S.%f'

但是我看不出%d/%m/%Y %H:%M:%S.%f中的哪个参数有问题?

这是我使用的代码。

from datetime import datetime
time_value = datetime.strptime(csv_line[0] + '000', '%d/%m/%Y %H:%M:%S.%f')

我已经添加和删除了000,但是我得到了相同的错误。


Tags: csv代码fromimportformatdata参数datetime
3条回答

您已交换月份和日期:

'%m/%d/%Y %H:%M:%S.%f'

否则,28将永远不符合%m月参数的范围。

以正确的顺序对%m%d进行解析:

>>> from datetime import datetime
>>> datetime.strptime('07/28/2014 18:54:55.099000', '%m/%d/%Y %H:%M:%S.%f')
datetime.datetime(2014, 7, 28, 18, 54, 55, 99000)

不需要添加'000'%f即可正确解析较短的数字:

>>> datetime.strptime('07/28/2014 18:54:55.099', '%m/%d/%Y %H:%M:%S.%f')
datetime.datetime(2014, 7, 28, 18, 54, 55, 99000)

虽然以上答案是100%有帮助和正确的,但我想补充以下几点,因为只有结合以上答案和阅读熊猫医生帮助我:

2位数/4位数年份

值得注意的是,为了解析一个2位数的年份,例如'90'而不是'1990',需要%y而不是%Y

自动推断日期时间

如果使用预定义格式进行分析仍然不起作用,请尝试使用标志infer_datetime_format=True,例如:

yields_df['Date'] = pd.to_datetime(yields_df['Date'], infer_datetime_format=True)

请注意,此解决方案比使用预定义格式慢。

为了比较日期和时间,你可以试试这个。日期时间格式可以更改

from datetime import datetime

>>> a = datetime.strptime("10/12/2013", "%m/%d/%Y")
>>> b = datetime.strptime("10/15/2013", "%m/%d/%Y")
>>> a>b
False

相关问题 更多 >