如果我有一个这样的数据框:
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 为:
metric
A B
1 a 4
b 5
2 c 2
当然是多索引级别 A 和 B。
我如何将指标总和“汇总”到 A 级别,并将其应用于该级别的 df,以便我得到如下结果:
metric total_metric_by_A
A B
1 a 4 9
b 5 9
2 c 2 2
我知道我可以重置索引,仅按 A 分组,然后以某种方式加入回来,但我真的不想这样做。有更好的办法吗?
最佳答案
groupby 还接受级别参数,因此您可以执行以下操作:
df.groupby(level='A').transform('sum')
Out:
metric
A B
1 a 9
b 9
2 c 2
当然,您需要将其分配回来
df['total_metric_by_A'] = df.groupby(level='A').transform('sum')
df
Out:
metric total_metric_by_A
A B
1 a 4 9
b 5 9
2 c 2 2
关于python - Pandas groupby 汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48345059/