清理日期为1677年之前的不同日期格式时的Pandas OutOfBoundsDatetime

时间:2019-07-16 11:40:57

标签: python pandas date dataframe datetime

对于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

我想帮助转换和清除我的日期,包括历史日期。感谢您的协助。

1 个答案:

答案 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])