pandas - pandas reindex 填补缺失的日期
问题描述
我有一个带有日期索引的数据框。每个数据都是当月的第一天。我想每天填写索引中所有缺失的日期。
我认为这应该工作:
daily=pd.date_range('2016-01-01', '2018-01-01', freq='D')
df=df.reindex(daily)
但它返回NA
的行中应该有数据(当月的第一个日期)有人能看到这个问题吗?
解决方案
使用reindex
with 参数method='ffill'
或resample
with 以ffill
获得更通用的解决方案,因为没有必要通过以下方式创建新索引date_range
:
df = pd.DataFrame({'a': range(13)},
index=pd.date_range('2016-01-01', '2017-01-01', freq='MS'))
print (df)
a
2016-01-01 0
2016-02-01 1
2016-03-01 2
2016-04-01 3
2016-05-01 4
2016-06-01 5
2016-07-01 6
2016-08-01 7
2016-09-01 8
2016-10-01 9
2016-11-01 10
2016-12-01 11
2017-01-01 12
daily=pd.date_range('2016-01-01', '2018-01-01', freq='D')
df1 = df.reindex(daily, method='ffill')
另一种解决方案:
df1 = df.resample('D').ffill()
print (df1.head())
a
2016-01-01 0
2016-01-02 0
2016-01-03 0
2016-01-04 0
2016-01-05 0
推荐阅读
- c++ - 最大化数组总和
- html - 使用 ACF 短代码值,该值返回一个 url 作为图像标签的 src
- docker - 如何使用带有 API 网关的 docker-compose 进行扩展
- c++ - 如何将文件中的逗号分隔数字读入 C++ 中的数组?
- java - BindResult hasErrors 方法未显示
- python - ValueError:形状(5,5)和(20,)未对齐:5(dim 1)!= 20(dim 0)
- spring-boot - Spring Boot 获取 Flyway 配置
- android - ConstraintSet如何清除constrainMaxHeight?
- angular - 在Angular中,身份验证后如何处理URL中的回调参数
- node.js - 如何使用 nginx 将 url 参数提供给 proxy_pass?