python - 用 Pandas 数据框中尽可能少的日期填充缺失的日期值

标签 python pandas datetime

我有一个数据框,其中日期列为,

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/

相关文章:

python - Pandas.read_excel 读取 xlsx 文件集时出现 KeyError

python - 如何将其转换为日期时间

java - 转换为 java.util.Date 时,将 2CE 年的 LocalDateTime 转换为一天

mysql - datetime(6) 适用于 XAMPP,但不适用于最新的 Ubuntu MySQL 服务器

python - 如何在 python 中的用户定义函数中实现 "positional-only parameter"?

python - 列表中的计数频率

Python Pandas to_pickle 无法 pickle 大型数据帧

php - 如何在 Python 中加密字符串并在 PHP 中解密相同的字符串?

python - 无法编译keras模型进行多类预测

python - 将字典键值从 UNIX 时间转换为人类可读时间