如何使用Groupby和Sum对pandas DataFrame分组聚合且不指定列名
解决方法
你之前只返回Echo列的求和结果,核心原因是Charlie和Delta列存在空字符串'',被pandas识别为object类型,默认不会参与数值聚合操作,仅本身是数值类型的Echo列被计算。
你可以先批量处理数值列的空值,再执行分组求和,全程不需要显式列出Charlie、Delta、Echo这些列名:
import pandas as pd # 你的原始DataFrame构造代码 df=pd.DataFrame({'Able': ['Blue', 'Green', 'Red', 'Orange'], 'Baker':[ 'New York', 'New Jersey', 'New York', 'New Jersey'], 'Charlie':[3,4,'',7], 'Delta':['',5,6,''],'Echo':[100,200,300,400]}).set_index('Able') # 1. 筛选出除分组键Baker之外的所有列,批量处理空值并转数值类型 num_cols = df.columns.difference(['Baker']) df[num_cols] = df[num_cols].replace('', 0).apply(pd.to_numeric) # 2. 按Baker分组,对其余所有列自动求和 res = df.groupby('Baker', as_index=False).sum()
执行后打印res即可得到你预期的输出:
Baker Charlie Delta Echo 0 New Jersey 11 5 600 1 New York 3 6 400
内容的提问来源于stack exchange,提问作者Tom Hughes
相关产品推荐
相关产品推荐

