4

我有一个 df 我想按两列分组。我想显示的是 level=1 中每个项目(即'c', 'd','e' 在示例中)。

例子:

我有以下数据框

df = pd.DataFrame({'col1':['a','a','a','a','a','b','b','b','b','b'], 'col2': ['c','c','d','d','e','c','c','d','d','e'],'col3':[2,2,2,2,2,2,2,2,2,2]})

col1 col2  col3
0    a    c     2
1    a    c     2
2    a    d     2
3    a    d     2
4    a    e     2
5    b    c     2
6    b    c     2
7    b    d     2
8    b    d     2
9    b    e     2

我想得到这个:

col1  col2
a     c       0.4
      d       0.4
      e       0.2
b     c       0.4
      d       0.4
      e       0.2
4

1 回答 1

4

首先按两列聚合sum,然后除以第一级:DataFrame.div sumMultiIndex

df1 = df.groupby(['col1','col2']).sum()
df1 = df1.div(df1.sum(level=0), level=0)
print (df1)
           col3
col1 col2      
a    c      0.4
     d      0.4
     e      0.2
b    c      0.4
     d      0.4
     e      0.2
于 2020-01-30T12:05:52.690 回答