用Pandas数据框中的最少日期填充缺失的日期值

时间:2019-06-03 06:10:47

标签: python pandas datetime

我有一个带有日期列的数据框,

df = pd.DataFrame({'date':['2014-10-01', np.nan, '2015-09-30', np.nan, np.nan, '2019-06-03']})

现在,我想用熊猫中的最小日期值来估算缺失的日期值。估算当前日期很容易datetime.now(),但是对于一种特殊情况,我希望使用日期中尽可能少的值来估算NaN值。

现在 datetime 允许最小日期设置为 '0001-01-01' ,但熊猫不能接受相同的最低日期。估算此值后,我得到的错误是

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

我尝试查找stackoverflow,但找不到对熊猫中最小可接受日期的答案。

有人知道吗?

编辑:我并不真正关心'OutOfBondsDatetime',我想知道大熊猫可以接受的最少日期。

1 个答案:

答案 0 :(得分:2)

如果您想与大熊猫搭配很好的约会,则需要考虑pd.Timestamp,因为这是大熊猫可以使用的datetime类型。

如果您不介意日期包含时间成分,请使用pd.Timestamp.min

pd.Timestamp.min
# Timestamp('1677-09-21 00:12:43.145225')

pd.to_datetime(df['date'].fillna(pd.Timestamp.min))

0   2014-10-01 00:00:00.000000
1   1677-09-21 00:12:43.145225
2   2015-09-30 00:00:00.000000
3   1677-09-21 00:12:43.145225
4   1677-09-21 00:12:43.145225
5   2019-06-03 00:00:00.000000
Name: date, dtype: datetime64[ns]

如果您只想要日期(无时间),则没有时间的最小日期为

pd.Timestamp.min.ceil('D')
# Timestamp('1677-09-22 00:00:00')

pd.to_datetime(df['date'].fillna(pd.Timestamp.min.ceil('D')))

0   2014-10-01
1   1677-09-22
2   2015-09-30
3   1677-09-22
4   1677-09-22
5   2019-06-03
Name: date, dtype: datetime64[ns]