我有一个带有日期列的数据框,
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',我想知道大熊猫可以接受的最少日期。
答案 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]