Pandas按列分组后对不同列分别应用不同聚合函数的实现方法
解决方案
你想要的分组后多列应用不同聚合函数的需求,只要在groupby后调用.agg()方法传入你写的聚合函数字典即可实现,正确写法如下:
# 基础写法,和你期望的语法逻辑完全匹配 result = df1.groupby(["A", "B"], as_index=False).agg({"C": sum ,"D": mean})
如果需要自定义聚合后的列名,避免和原始列名混淆,可以用Pandas 0.25版本后支持的命名聚合语法:
result = df1.groupby(["A", "B"], as_index=False).agg( C总数值 = ("C", "sum"), D平均值 = ("D", "mean") )
你之前得到的输出结构不符合预期,通常是没有设置as_index=False导致分组列被转为行索引,加上该参数后分组键会作为普通列保留,最终输出结构和下图的预期效果完全一致:
内容的提问来源于stack exchange,提问作者Babas
相关产品推荐
相关产品推荐

