将'%m /%d /%Y'字符串索引转换为pandas datetime索引

时间:2016-08-23 20:16:24

标签: python pandas

我的索引是日期时间字符串,格式为'%m/%d/%Y' ('09/26/2007')

当我尝试使用pd.to_datetime函数pd.to_datetime(df.index)将索引转换为datetime索引时,收到错误消息OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-01 00:00:00

看起来pandas无法检测到正确的字符串格式,我如何将索引转换为datetime索引?

由于

1 个答案:

答案 0 :(得分:4)

错误消息的外观,您的索引中可能显示字符串'1/1/0001'。例如,

df = pd.DataFrame([1,2], index=['09/26/2007', '1/1/0001'])
pd.to_datetime(df.index)

加注

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

出现此错误是因为DatetimeIndex使用的NumPy datetime64[ns]数组不能代表日期0001-01-01。 datetime64[ns] dtype只能代表dates in the range [1678 AD, 2262 AD]

pandas github issue讨论此限制。

目前,推荐的解决方案是使用PeriodIndex而不是DatetimeIndex:

df = pd.DataFrame([1,2], index=['09/26/2007', '1/1/0001'])
df.index = pd.PeriodIndex(df.index, freq='D')

产量

            0
2007-09-26  1
1-01-01     2