如何在Pandas中无需逐一列名实现分组并批量求和多列
解决方案
方法1:让pandas自动处理(最简便)
pandas的sum()方法会自动跳过非数值类型的列(比如你的Month列是字符串),直接对所有数值列求和,无需手动指定列名:
sum_df = df.groupby('Year').sum()
方法2:明确选择数值列(更严谨)
如果担心数据中有其他非数值列干扰,可以先筛选出所有数值类型的列再求和:
# 筛选int/float类型的列 numeric_columns = df.select_dtypes(include=['int64', 'float64']).columns sum_df = df.groupby('Year')[numeric_columns].sum()
方法3:修正你原来的代码
你之前的错误是sum()方法不接受列名列表作为参数,正确写法是先指定列再调用sum():
# 取第2列及以后的所有列(不用写死100,适配任意列数) headers = list(df.iloc[:, 2:].columns) sum_df = df.groupby('Year')[headers].sum()
以上三种方法都能得到你期望的结果:
a b c d e Year 2012 174.0 69.0 68.0 126.0 91.0 2013 99.0 121.0 86.0 150.0 107.0
内容的提问来源于stack exchange,提问作者Bobby Heyer
相关产品推荐
相关产品推荐

