如何强制多索引熊猫数据框在一个级别中具有相同数量的索引?

时间:2019-11-22 15:56:45

标签: pandas multi-index

我有一个如下数据框:

Level0     Level1     Value

Cat1       Subcat1    1
           Subcat2    2
           Subcat3    3

Cat2       Subcat1    4
           Subcat3    5

Cat3       Subcat1    6
           Subcat2    7
           Subcat3    8

Cat2中,我只有Subcat1Subcat3。我想做的是Cat2也有Subcat2并将其Value设置为零:

Level0     Level1     Value

Cat1       Subcat1    1
           Subcat2    2
           Subcat3    3

Cat2       Subcat1    4
           Subcat2    0
           Subcat3    5

Cat3       Subcat1    6
           Subcat2    7
           Subcat3    8

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

pandas.MultiIndex.from_product

new = pd.MultiIndex.from_product(
    df.index.levels, names=df.index.names
)

df.reindex(new, fill_value=0)

               Value
Level0 Level1       
Cat1   Subcat1     1
       Subcat2     2
       Subcat3     3
Cat2   Subcat1     4
       Subcat2     0
       Subcat3     5
Cat3   Subcat1     6
       Subcat2     7
       Subcat3     8

答案 1 :(得分:1)

我们可以做stackunstack

df.unstack(fill_value=0).stack()