【问题标题】:Python 2.7: Pandas datetime does not work for future dates?Python 2.7:Pandas 日期时间不适用于未来的日期?
【发布时间】: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


【解决方案1】:

http://pandas.pydata.org/pandas-docs/stable/timeseries.html#timeseries-oob

以下是表示边界外数据的方法(从 Timestamp('1677-09-22 00:12:43.145225') 到 Timestamp('2262-04-11 23:47:16.854775807') )。

在 TimeStamp 范围之外进行计算的推荐方法是使用 PeriodIndex。

【讨论】:

    猜你喜欢
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    相关资源
    最近更新 更多