pandas - 熊猫中运行日期的填充
问题描述
我有一个包含日期和值列的数据框,如下所示:
date value
2019-01-01 10
2019-01-02 15
NaT 20
NaT 30
2019-01-05 40
2019-01-06 45
如果没有预定义的 2019-01-03 和 2019-01-04,如何自动填充 NaT?
解决方案
如果没有具有正确放置的缺失值的重复排序日期时间并且第一个与最后一个值没有缺失,则可以分配回由创建的值date_range
:
df['date'] = pd.date_range(df['date'].min(), df['date'].max())
print (df)
date value
0 2019-01-01 10
1 2019-01-02 15
2 2019-01-03 20
3 2019-01-04 30
4 2019-01-05 40
5 2019-01-06 45
另一个想法是为所有缺失的组创建 timedelta 范围,并添加到最后一个非缺失的日期ffill
时间:
m = df['date'].isna()
s = pd.to_timedelta(df[m].groupby(m.ne(m.shift()).cumsum()).cumcount().add(1), unit='d')
df.loc[m, 'date'] = df['date'].ffill() + s
print (df)
date value
0 2019-01-01 10
1 2019-01-02 15
2 2019-01-03 20
3 2019-01-04 30
4 2019-01-05 40
5 2019-01-06 45
推荐阅读
- c++ - 在不破坏现有代码的情况下添加新枚举
- python - 使用 python - tkinter 设置根窗口的单一维度的方法?
- json - Ansible 漂亮的打印 json
- .net - 在云端混淆应用程序设置文件,但允许本地应用程序开发
- c - TCL:在嵌入 C 时调用 TCL 包
- javascript - 如何根据设备使 JavaScript 打开页面?
- javascript - 我在 useState 中发现错误了吗?还是我不明白它是如何工作的?
- database - Oracle 18c 的所有服务都没有安装。无法连接到 Sql plus
- angular - 将字段绑定到响应式表单不显示值
- python - 注释 FacetGrid 点图