You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas如何按每5列分组求和,处理不足5列的末尾分组?

解决方案:DataFrame按每5列分组求和(支持动态新增列)

问题分析

你之前用loc[1:5].apply(np.sum, axis=1)的问题在于:

  • 切片范围固定,无法适配动态新增的列;
  • 当末尾列数不足5时,切片会超出有效列范围,导致返回NaN。

可行代码实现

import pandas as pd
import numpy as np

# 模拟持续新增列的DataFrame(示例为7列)
df = pd.DataFrame({
    'Col1': [1,2,3],
    'Col2': [4,5,6],
    'Col3': [7,8,9],
    'Col4': [10,11,12],
    'Col5': [13,14,15],
    'Col6': [16,17,18],
    'Col7': [19,20,21]
})

# 生成每列对应的分组标签(每5列一组)
group_labels = np.arange(len(df.columns)) // 5 + 1

# 按分组对列求和
sum_df = df.groupby(group_labels, axis=1).sum()

# 重命名汇总列
sum_df.columns = [f'Column Sum {i}' for i in sum_df.columns]

# 可选:合并原DataFrame与汇总列(若需保留原数据)
result_df = pd.concat([df, sum_df], axis=1)

代码说明

  • 动态分组:np.arange(len(df.columns)) //5 +1会自动给每一列分配分组编号,不管后续新增多少列,都会按每5列一组的规则划分,末尾不足5列的部分会自动形成最后一组。
  • 正确求和:groupby(..., axis=1).sum()会对每个分组内的所有列横向求和,无论分组内列数是5还是少于5,都能返回正确结果,不会出现NaN。
  • 灵活扩展:后续新增列后,只需重新运行这段代码,就能自动生成新的分组汇总列,无需手动调整切片范围。

内容的提问来源于stack exchange,提问作者Nathan Pared

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:02:52