如何在熊猫中移动日期时间的时间戳范围(使用历史数据)?

ang*_*210 6 datetime pandas

我正在使用历史数据,并且有一些非常古老的日期,不在熊猫的时间戳范围内。我已经查阅了熊猫时间序列/日期功能文档,该文档提供了一些有关跨界的信息,但是从这些信息中,我仍然不清楚,如果可以将数据转换为datetime类型,我该怎么做。。

我还看到了一些关于Stack Overflow的线程,但是它们只是指出了问题所在(例如,纳秒,最大范围为570多年),或者建议设置errors = coerce将80%的数据转换为NaTs。

是否可以将低于默认熊猫下限的日期转换为日期?这是我的数据示例:

import pandas as pd

df = pd.DataFrame({'id': ['836', '655', '508', '793', '970', '1075', '1119', '969', '1166', '893'], 
                   'date': ['1671-11-25', '1669-11-22', '1666-05-15','1673-01-18','1675-05-07','1677-02-08','1678-02-08', '1675-02-15', '1678-11-28', '1673-12-23']})
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 3

您可以通过 lambda 函数创建日期周期:

df['date'] = df['date'].apply(lambda x: pd.Period(x, freq='D'))
Run Code Online (Sandbox Code Playgroud)

或者像评论中提到的@Erfan(谢谢):

df['date'] = df['date'].apply(pd.Period)

print (df)
     id        date
0   836  1671-11-25
1   655  1669-11-22
2   508  1666-05-15
3   793  1673-01-18
4   970  1675-05-07
5  1075  1677-02-08
6  1119  1678-02-08
7   969  1675-02-15
8  1166  1678-11-28
9   893  1673-12-23
Run Code Online (Sandbox Code Playgroud)

  • 只需 `df['date'].apply(pd.Period)` 也可以 (4认同)