首页 > 解决方案 > 我可以用 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

有没有使用重采样器的简单方法?

标签: pythonpandasdataframe

解决方案


您可以对第二级和 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

推荐阅读