在具有唯一值的层级中重新索引多重索引

5

我有这个数据框:

df = pd.DataFrame({'NUMBER_1': {('2019-07', 'A'): 4, ('2019-07', 'D'): 2, ('2019-08', 'A'): 32, ('2019-08', 'B'): 14, ('2019-09', 'A'): 32, ('2019-09', 'B'): 53, ('2019-09', 'C'): 54, ('2019-09', 'D'): 24},
 'NUMBER_2': {('2019-07', 'A'): 75, ('2019-07', 'D'): 12, ('2019-08', 'A'): 42, ('2019-08', 'B'): 32, ('2019-09', 'A'): 54, ('2019-09', 'B'): 21,  ('2019-09', 'C'): 97, ('2019-09', 'D'): 65}})

df

输入图像描述

我正在寻找以下输出:

输入图像描述

我看到类似于分类类型列的问题,但没有针对索引的问题,我正在寻找一种避免使用方法reset_index()的方法,因为实际上我正在使用四个索引而不仅仅是最小示例中的两个。 有什么建议吗?

1个回答

8

您可以使用当前的MultiIndex.levels并将fill_value设置为0,来定义一个MultiIndex,并使用reindex重新索引:

df.reindex(pd.MultiIndex.from_product(df.index.levels), fill_value=0)

              NUMBER_1  NUMBER_2
2019-07 A         4        75
        B         0         0
        C         0         0
        D         2        12
2019-08 A        32        42
        B        14        32
        C         0         0
        D         0         0
2019-09 A        32        54
        B        53        21
        C        54        97
        D        24        65

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接