对于Pandas,我正在使用this answer来清理各种格式的日期。如果我过滤掉1677年之前的日期,这将非常有效。但是我的日期是历史性的,并且很多日期都在1677年之前,因此我收到OutOfBoundsDatetime错误。
我的数据包含以下日期:
27 Feb 1928,
1920,
October 2000,
1500,
1625,
Mar 1723
我可以看到reference here使用pd.Period,但是我不知道如何将其应用于我的案例,因为在适应该示例之前,需要先清除日期
我清除日期的代码是:
df['clean_date'] = df.dates.apply(
lambda x: pd.to_datetime(x).strftime('%m/%d/%Y'))
df
我想帮助转换和清除我的日期,包括历史日期。感谢您的协助。
答案 0 :(得分:0)
在online documentation中已明确指出,您不能有{strong>不属于datetime64[ns]
的{{1}} dtype值。
但是您可以使用Period dtype之类的日期。
样本输入数据集:
['1677-09-21 00:12:43.145225', '2262-04-11 23:47:16.854775807']
解决方案:
In [156]: df
Out[156]:
Date
0 27 Feb 1928
1 1920
2 October 2000
3 1500
4 1625
5 Mar 1723
In [157]: df.dtypes
Out[157]:
Date object
dtype: object
结果:
In [158]: df["new"] = pd.PeriodIndex([pd.Period(d, freq="D") for d in df.Date])