首页 > 解决方案 > 多层次的 Groupby 和 Sum

问题描述

我有一个具有以下初始化的数据框,我想查找“a”列中的值是否存在于“b”列中。然后,如果该值存在,我想要列“c”的所有相应值的总和。

不适用

df = pd.DataFrame({'a': [1,2,3, 1, 4, 1, 2],
              'b': [1,5,1, 2, 3, 1, 3],
              'c': [10,20,40, 50, 60, 70, 100]})

示例结果在下面的图片链接中:

在此处输入图像描述

标签: pythonpandas

解决方案


df[['a','b']].join(df.groupby('b').c.sum(),on='a').fillna(0, downcast='infer')

或者

df.groupby('b').c.sum().reindex(df.a,fill_value=0).reset_index().assign(b=df.b).sort_index(axis=1)

或者

df.assign(c = df.groupby('b').c.sum().reindex(df.a, fill_value=0).reset_index(drop=True))

推荐阅读