我正在使用历史数据,并且有一些非常古老的日期,不在熊猫的时间戳范围内。我已经查阅了熊猫时间序列/日期功能文档,该文档提供了一些有关跨界的信息,但是从这些信息中,我仍然不清楚,如果可以将数据转换为datetime
类型,我该怎么做。。
我还看到了一些关于Stack Overflow的线程,但是它们只是指出了问题所在(例如,纳秒,最大范围为570多年),或者建议设置errors = coerce
将80%的数据转换为NaT
s。
是否可以将低于默认熊猫下限的日期转换为日期?这是我的数据示例:
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)
您可以通过 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)