python - 我可以用 MultiIndex 重新采样(填充)pandas DataFrame
问题描述
我有一个看起来像这样的数据框,上面有一个 MultiIndex ('timestamp', 'id')
:
value
timestamp id
2020-03-03 A 100
2020-03-03 B 222
2020-03-03 C 5000
2020-03-04 A NaN
2020-03-04 B 1
2020-03-04 C NaN
2020-03-05 A 200
2020-03-05 B NaN
2020-03-05 C NaN
2020-03-06 A NaN
2020-03-06 B 20
2020-03-06 C NaN
我想转发填充(按时间),value
以便用最近可用的数据项填充数据框,即 DataFrame 变为:
value
timestamp id
2020-03-03 A 100
2020-03-03 B 222
2020-03-03 C 5000
2020-03-04 A 100
2020-03-04 B 1
2020-03-04 C 5000
2020-03-05 A 200
2020-03-05 B 1
2020-03-05 C 5000
2020-03-06 A 200
2020-03-06 B 20
2020-03-06 C 5000
有没有使用重采样器的简单方法?
解决方案
您可以对第二级和 ffill 进行排序,然后像原来的那样重新索引:
df.sort_index(level=1).ffill().reindex(df.index)
value
timestamp id
2020-03-03 A 100.0
B 222.0
C 5000.0
2020-03-04 A 100.0
B 1.0
C 5000.0
2020-03-05 A 200.0
B 1.0
C 5000.0
2020-03-06 A 200.0
B 20.0
C 5000.0
推荐阅读
- python - Python pandas:交换 DataFrame 切片的列值
- mysql - 如何使用 MySQL 从查询结果中删除 lrm 字符?
- r - 在 lapply 中使用 for 循环
- c - 在c中生成随机多个数字
- c++ - 如何在 C++ 中删除目录中的文件?
- javascript - 怎么做才对。(带饼图的年周期)
- julia - 使用 Julia 逐步绘制函数
- android - 使用 Android 模拟器调制解调器和 wifi 连接到单独的网络
- tensorflow - 如何在 Keras 顺序模型中使用 LayerNormalization 层?
- omnet++ - 查找或创建与发送消息时触发的 handleMessage 方法行为相反的方法