我有一个数据框,其中日期列为,
df = pd.DataFrame({'date':['2014-10-01', np.nan, '2015-09-30', np.nan, np.nan, '2019-06-03']})
现在我想用 pandas 中尽可能少的日期值来估算缺失的日期值。估算当前日期很容易 datetime.now()
,但对于一种特殊情况,我希望使用日期中尽可能小的值来估算 NaN
值。
现在日期时间
允许最小日期为'0001-01-01'
,但相同的是 Pandas Not Acceptable 。在输入这个值后,我得到的错误是
OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-01 00:00:00
我尝试在 stackoverflow 上查找,但找不到 pandas 中可接受的最小日期的可能答案。
有人知道这个吗?
编辑:我并不真正关心“OutOfBondsDatetime”,我很想知道 pandas 可以接受的最短日期。
最佳答案
如果您想要一个与 pandas 配合良好的日期,则需要考虑 pd.Timestamp
,因为这是 pandas 使用的 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]
关于python - 用 Pandas 数据框中尽可能少的日期填充缺失的日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56421931/