我有一个如下数据框:
Level0 Level1 Value
Cat1 Subcat1 1
Subcat2 2
Subcat3 3
Cat2 Subcat1 4
Subcat3 5
Cat3 Subcat1 6
Subcat2 7
Subcat3 8
在Cat2
中,我只有Subcat1
和Subcat3
。我想做的是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
非常感谢您的帮助!
答案 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)
我们可以做stack
和unstack
df.unstack(fill_value=0).stack()