重新索引以在多索引数据框中插入缺失的行

时间:2018-05-12 18:36:57

标签: pandas

我有一个带有三个索引级别的MultiIndexed DataFrame。我想扩展我的第三级以包含给定范围内的所有值,但仅限于两个较高级别中的现有值。 例如,假设第一级是名称,第二级是日期,第三级是小时。我希望所有24小时都有行(即使有些人目前缺少),但仅限于已有的名称和日期。新行中的值可以用零填充。

所以一个简单的示例输入是:

>>> import pandas as pd
>>> df = pd.DataFrame([[1,1,1,3],[2,2,1,4], [3,3,2,5]], columns=['A', 'B', 'C','val'])
>>> df.set_index(['A', 'B', 'C'], inplace=True)
>>> df
       val
A B C     
1 1 1    3
2 2 1    4
3 3 2    5

如果C的所需值为[1,2,3],则所需的输出为:

       val
A B C     
1 1 1    3
    2    0
    3    0
2 2 1    4
    2    0
    3    0
3 3 1    0
    2    5
    3    0

我知道如何使用groupby并为每个组应用一个已定义的函数来实现这一点,但我想知道是否有更简洁的方法使用reindex执行此操作(我无法使此one工作对于MultiIndex案例,但也许我错过了什么)

0 个答案:

没有答案