Pandas分组汇总

2024-04-18 20:57:34 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有这样的数据帧:

import pandas as pd
df=pd.DataFrame({"A":[1,1,2],"B":["a","b","c"],"metric":[4,5,2]})
df=df.groupby(["A","B"]).sum()

结果df为:

^{pr2}$

当然,对于多索引级别A和B

如何将度量值的总和“汇总”到一个级别,并将其应用于该级别上的df,从而得到如下结果:

     metric   total_metric_by_A
A B        
1 a       4                   9
  b       5                   9
2 c       2                   2

我知道我可以重置索引,只按A分组,然后以某种方式加入,但我真的不想这样做。有更好的方法吗?在


Tags: 数据importdataframepandasdf度量as级别
2条回答

reindex没有第二个groupby

df['Total']=df.sum(level='A').reindex(df.index,level=0)
df
Out[179]: 
     metric  Total
A B               
1 a       4      9
  b       5      9
2 c       2      2

groupby还接受level参数,因此您可以执行以下操作:

df.groupby(level='A').transform('sum')
Out: 
     metric
A B        
1 a       9
  b       9
2 c       2

你需要在课程后面指定这个

^{pr2}$

相关问题 更多 >