如何在Pandas中按客户和金属对多列分组求和?
Pandas多列分组求和解决方案
当然有,Pandas的groupby()配合sum()就是最简便高效的方法,完全不需要遍历行,天生支持多列求和,完美适配大型数据集。
核心用法
对所有数值列求和
直接按customer和metal分组后调用sum(),Pandas会自动对分组内的所有数值型列执行求和操作:# 假设你的数据集存储在df变量中 grouped_result = df.groupby(['customer', 'metal']).sum().reset_index()这里的
reset_index()是把分组的键(customer和metal)从索引变回普通列,和目标输出的结构一致。对指定列求和
如果只需要对部分列求和,直接在groupby()后指定目标列即可:# 比如只对quantity和weight列求和 grouped_result = df.groupby(['customer', 'metal'])[['quantity', 'weight']].sum().reset_index()
说明
这种方式是Pandas内置的向量化操作,底层用C实现,比手动遍历行快几个数量级,完全适合处理大型数据集。你担心的“多列求和”正是sum()的默认行为——它不会只处理单列,只要是数值型列都会被自动计算。
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

