我有一个带有日期列的数据框,
df = pd.DataFrame({'date':['2014-10-01', np.nan, '2015-09-30', np.nan, np.nan, '2019-06-03']})
现在我想用 pandas 中尽可能少的日期值来估算缺失的日期值。估算当前日期很容易datetime.now()
但对于一种特殊情况我想要NaN
用日期中可能的最小值来估算的值。
Now datetime
允许最短日期为'0001-01-01'
但这对于熊猫来说是不可接受的。在输入这个值时,我得到的错误是
OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-01 00:00:00
我尝试在 stackoverflow 上查找,但找不到 pandas 中可接受的最小日期的可能答案。
有人知道这一点吗?
编辑:我并不真正关心“OutOfBoundsDatetime”,我很好奇知道熊猫可以接受的最小可能日期。
如果你想要一个与熊猫相处融洽的约会,你需要考虑pd.Timestamp
,因为这是datetime
pandas 使用的类型。
如果您不介意日期有时间部分,请使用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]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)