具有多个层次索引的 Pandas 数据框

数据挖掘 熊猫 数据框 索引
2021-10-02 14:25:15

我有一个看起来像这样的数据框

FRUIT       ID      COLOR       WEIGHT
Apple       142     Red         Heavy
Mango       231     Red         Light
Apple       764     Green       Light
Apple       543     Green       Heavy

我想要以下结果:

FRUIT                 COUNT
Apple       COLOR
            Red         1
            Green       2

            WEIGHT
            Heavy       2
            Light       1

Mango       COLOR
            Red         1
            Green       0
            
            WEIGHT
            Heavy       0
            Light       1   

我在数据帧上尝试了 和 的不同变体set_indexgroupby()并与andunstack()结合使用,但我的分组仅适用于第一级(水果)。在第二层,我无法分别获得颜色和重量,我总是以重量作为颜色的另一个子索引,所以它看起来像['ID]'.count().size()

FRUIT                 
Apple       COLOR    WEIGHT   COUNT
            Red      Heavy    1
                     Light    0

            Green    Heavy    1
                     Light    1 

我怎样才能得到我想要的结果?

1个回答

我得到它使用下面的简单代码行

df.set_index('fruit').stack().groupby(level=[0,1]).value_counts().unstack(level=[1,2]).fillna(0)