【问题标题】:Pandas.to_datetime giving an error when given 15-Jan-0001 is there a way around this?Pandas.to_datetime 在给出 15-Jan-0001 时给出错误有没有办法解决这个问题?
【发布时间】:2018-05-18 12:44:51
【问题描述】:

我有一个可以追溯到 0001 年 1 月 15 日的数据集(是的,即 1 CE!),它最初是 0 CE,但由于那一年不存在,我从数据中删除了这 12 个月。

我正在尝试让 pandas 将我的 datasdf.datetime=pd.to_datetime(df.datetime) 中的日期时间字符串转换为内部日期时间对象。

我试过了:

import pandas as pd
df = pd.load_csv(file)
df.datetime = pd.to_dtaetime(df.datetime)

得到:

OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-15 00:00:00

csv 文件的前两行是:

datenum,year,month,day,datetime,data_mean_global,data_mean_nh,data_mean_sh
381,1,1,15,15-Jan-0001 00:00:00,277.876675965034,278.555895908363,277.197456021705

【问题讨论】:

  • 我找到了答案,显然这是一个功能!在我的情况下,使用它的方法是 pd.PeriodIndex(start=date_start,end=date_end,freq="M")

标签: python pandas datetime


【解决方案1】:

一种方法是将这个有问题的值转换为NaTs:

df.datetime = pd.to_dtaetime(df.datetime, errors='coerce')

【讨论】:

  • 这并没有真正帮助,因为它把 NaT(大概不是时间)放到了这个领域。有趣的是,情节现在开始于 1689 年,之前的所有数据都被忽略了。
  • hmmm,那就有问题了,因为limits。一种可能的解决方案应该是转换为PeriodIndex
  • 再次感谢您! periodindex 将形成,但不会绘图! Python 的 datetime 模块确实接受第 1 年,因此下一步是尝试应用它。祝我好运! (或者我可以在 R 中执行此操作)。
  • 仍在研究一个:Pandas 在这里有点麻烦。我可以尝试将数据集放入一个 numpy 数组并从那里绘制。或者可以尝试使用 R 来绘制这个图(可能通过 rpy2 或其他任何名称。
  • 我找到了答案,这显然是一个功能!在我的情况下,使用它的方法是 pd.PeriodIndex(start=date_start,end=date_end,freq="M")
猜你喜欢
  • 2022-06-11
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 2022-09-27
  • 1970-01-01
  • 2021-06-03
  • 1970-01-01
  • 2020-02-09
相关资源
最近更新 更多