【发布时间】:2016-08-30 09:14:37
【问题描述】:
当我遇到 ValueError 时,我试图将 DataFrame 列(字符串)转换为 datetime 格式。这是使用字符串而不是 DataFrame 列的可重现代码(和错误):
>>> import pandas as pd
>>> pd.to_datetime('2007-08-17', format='%Y-%m-%d') #Works fine
Timestamp('2007-08-17 00:00:00')
>>> pd.to_datetime('2557-08-17', format='%Y-%m-%d') # Throws Error
ValueError: time data '2557-08-17' does match format specified
这是一个真正的问题还是我做错了什么?如何解决这个问题?
【问题讨论】:
-
那是因为您提供的日期大于
pd.Timestamp.max = "2262-04-11"。您希望在未来走多远?pd.to_datetime的文档字符串提到了这一点。 -
@wflynny 我不知道有最大限制。谢谢你的信息。这些日期(很可能)是流经我数据的垃圾值,但我希望程序中不要出现任何问题。
-
如果值是垃圾,您可以执行类似
df.loc[:, df.date_col > pd.Timestamp.max.isoformat()] = pd.NaT的操作。pd.to_datetime方法可以接受 NaN/NaT 值。 -
@wflynny 将垃圾值设置为 pd.NaT 对我的上下文非常有用。谢谢你的建议。
标签: python python-2.7 datetime pandas