python - 使用级别中的唯一值重新索引 MultiIndex

标签 python pandas

我有这个数据框:

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 :

enter image description here

我在哪里寻找这个输出:

enter image description here

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

最佳答案

您可以定义一个 MultiIndex 使用当前 MultiIndex.levels , 和 reindex 设置 fill_value0 :

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

关于python - 使用级别中的唯一值重新索引 MultiIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61068352/

相关文章:

python - 导入 numpy 给出 ImportError : cannot import name TestCase

python - 正在定义的类型对象的类型提示

python-3.x - 具有互补零的 Pandas 标志行

python - 使用 groupby 过滤重复值

python - 找到对应的列号到最大值

python - 没有名为 django-extensions 的模块

python - 从 Python 列表中有效地删除非常接近的重复项

python - 如何将一个包含 +1.048.576 行的数据框导出到多个 Excel 文件/工作表中

python - 使用 df.at 时覆盖列值

python - 多索引 - 获取每个第一个索引的第二个索引的最大值