Pandas如何按指定多列分组对字段值相同行的金额进行求和汇总
你之前的写法问题在于没有把四个需要匹配的字段全部传入groupby的分组列表,也没有指定仅对金额字段做聚合,所以会出现其余列丢失、匹配规则不符合要求的问题。
正确实现代码如下:
# 请将代码中的「Amount」替换为你数据表中实际的金额列名 result = df.groupby(['Name', 'Product ID', 'State', 'Type'], as_index=False)['Amount'].sum()
参数说明:
- 传入
groupby的四个列名即为需要匹配取值的分组维度,只有四个字段取值完全一致的行才会被分到同一组做聚合 as_index=False参数用于避免将分组字段转为行索引,保证输出结果的列结构和你预期的汇总表一致- 末尾指定
['Amount'].sum()即仅对金额列做求和运算,不会影响其余分组字段的展示
如果你的数据表中还有其他非分组字段需要保留,可以用agg方法自定义各列的聚合规则,示例如下:
result = df.groupby(['Name', 'Product ID', 'State', 'Type'], as_index=False).agg( Amount=('Amount', 'sum'), # 如需保留其他列,可参照下方写法,first代表取同组内的第一条值 # 其他列名=('其他列名', 'first') )
内容的提问来源于stack exchange,提问作者Paulo Luis
相关产品推荐
相关产品推荐

