具有零值的 Pandas 汇总表

我正在尝试使用 python 的 pandas 中的 .describe() 创建一个汇总表。


我有以下数据框:


df = pd.DataFrame({'Group':['Group1', 'Group1', 'Group1', 'Group2', 'Group2', 'Group2', 'Group3', 'Group3', 'Group4'],

'Cat':['Cat1', 'Cat2', 'Cat3', 'Cat4', 'Cat5', 'Cat', 'Cat7', 'Cat8', 'Cat9'],

'Value':[1230,4019,9491,9588,6402,1923,492,8589,8582]})

df


    Group   Cat Value

0   Group1  Cat1    1230

1   Group1  Cat2    4019

2   Group1  Cat3    9491

3   Group2  Cat4    9588

4   Group2  Cat5    6402

5   Group2  Cat     1923

6   Group3  Cat7    492

7   Group3  Cat8    8589

8   Group4  Cat9    8582

我想生成一个按 Group 和 Cat 分组的汇总表,其中不在 Group 中的所有 Cats 以相同的方式显示,所有值 = 0。


我正在尝试:


        df.groupby(['Group', 'Cat']).describe()


# That has the following output:

            Value

    count   mean    std min 25% 50% 75% max

    Group   Cat                             

    Group1  Cat1    1.0 1230.0  NaN 1230.0  1230.0  1230.0  1230.0  1230.0

            Cat2    1.0 4019.0  NaN 4019.0  4019.0  4019.0  4019.0  4019.0

            Cat3    1.0 9491.0  NaN 9491.0  9491.0  9491.0  9491.0  9491.0

    Group2  Cat     1.0 1923.0  NaN 1923.0  1923.0  1923.0  1923.0  1923.0

            Cat4    1.0 9588.0  NaN 9588.0  9588.0  9588.0  9588.0  9588.0

            Cat5    1.0 6402.0  NaN 6402.0  6402.0  6402.0  6402.0  6402.0

    Group3  Cat7    1.0 492.0   NaN 492.0   492.0   492.0   492.0   492.0

            Cat8    1.0 8589.0  NaN 8589.0  8589.0  8589.0  8589.0  8589.0

    Group4  Cat9    1.0 8582.0  NaN 8582.0  8582.0  8582.0  8582.0  8582.0


我想知道如何获得这个输出。



繁华开满天机
浏览 126回答 2
2回答

MYYA

您还可以根据获得的索引创建笛卡尔积索引列表reindex:out = df.groupby(['Group', 'Cat']).describe()idx = pd.MultiIndex.from_product((out.index.levels[0],out.index.levels[1]))out = out.reindex(idx,fill_value=0)            Value                                                                 count    mean  std     min     25%     50%     75%     maxGroup1 Cat    0.0     0.0  0.0     0.0     0.0     0.0     0.0     0.0       Cat1   1.0  1230.0  NaN  1230.0  1230.0  1230.0  1230.0  1230.0       Cat2   1.0  4019.0  NaN  4019.0  4019.0  4019.0  4019.0  4019.0       Cat3   1.0  9491.0  NaN  9491.0  9491.0  9491.0  9491.0  9491.0       Cat4   0.0     0.0  0.0     0.0     0.0     0.0     0.0     0.0       Cat5   0.0     0.0  0.0     0.0     0.0     0.0     0.0     0.0       Cat7   0.0     0.0  0.0     0.0     0.0     0.0     0.0     0.0       Cat8   0.0     0.0  0.0     0.0     0.0     0.0     0.0     0.0       Cat9   0.0     0.0  0.0     0.0     0.0     0.0     0.0     0.0Group2 Cat    1.0  1923.0  NaN  1923.0  1923.0  1923.0  1923.0  1923.0       Cat1   0.0     0.0  0.0     0.0     0.0     0.0     0.0     0.0       Cat2   0.0     0.0  0.0     0.0     0.0     0.0     0.0     0.0       Cat3   0.0     0.0  0.0     0.0     0.0     0.0     0.0     0.0       Cat4   1.0  9588.0  NaN  9588.0  9588.0  9588.0  9588.0  9588.0       Cat5   1.0  6402.0  NaN  6402.0  6402.0  6402.0  6402.0  6402.0       Cat7   0.0     0.0  0.0     0.0     0.0     0.0     0.0     0.0       Cat8   0.0     0.0  0.0     0.0     0.0     0.0     0.0     0.0       Cat9   0.0     0.0  0.0     0.0     0.0     0.0     0.0     0.0Group3 Cat    0.0     0.0  0.0     0.0     0.0     0.0     0.0     0.0       Cat1   0.0     0.0  0.0     0.0     0.0     0.0     0.0     0.0       ....................................       ...............................

慕斯709654

检查unstack + stack,注意我还建议保留行值NaN不填充 0out = df.groupby(['Group', 'Cat']).describe().unstack().stack(dropna=False)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python