在 Pandas 数据帧中使用可能的最小日期填充缺失的日期值



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

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

我尝试查找堆栈溢出,但找不到熊猫中最小可接受日期的可能答案。

有人知道这一点吗?

编辑:我并不真正关心"债券外日期时间",我很想知道熊猫可以接受的最少日期。

如果你想要一个与熊猫相处得很好的约会,你需要考虑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]

最新更新