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

如何对Pandas DataFrame分组并计算指定列的总和?

按Plan分组计算Quantity_y总和的解决方案

原始数据

Plan         | Quantity_y
Starter      | 1
Intermediate | 1
Intermediate | 1
Intermediate | 2
Intermediate | 1
Intermediate | 14
Intermediate | 1
Advanced     | 1
Advanced     | 1
Advanced     | 2
Advanced     | 1
Incredible   | 1
Incredible   | 1
Incredible   | 1
Incredible   | 1
Incredible   | 1
Incredible   | 2
Incredible   | 2

期望结果

Plan         | Quantity_y
Starter      | 1
Intermediate | 20
Advanced     | 5
Incredible   | 9

解决方案(Pandas)

直接用Pandas内置的groupby+sum方法就能高效实现,这比手动用iterrows()或自定义apply()简洁且性能更好:

import pandas as pd

# 1. 如果数据从文本/文件读取:
data = """Plan         | Quantity_y
Starter      | 1
Intermediate | 1
Intermediate | 1
Intermediate | 2
Intermediate | 1
Intermediate | 14
Intermediate | 1
Advanced     | 1
Advanced     | 1
Advanced     | 2
Advanced     | 1
Incredible   | 1
Incredible   | 1
Incredible   | 1
Incredible   | 1
Incredible   | 1
Incredible   | 2
Incredible   | 2"""

# 读取为DataFrame,自动处理分隔符和空格
df = pd.read_csv(pd.compat.StringIO(data), sep='|', skipinitialspace=True)

# 2. 确保Quantity_y是数值类型(读取自动识别失败时手动转换)
df['Quantity_y'] = pd.to_numeric(df['Quantity_y'], errors='coerce')

# 3. 分组求和,as_index=False保留Plan为普通列
result_df = df.groupby('Plan', as_index=False)['Quantity_y'].sum()

# 输出格式化结果
print(result_df.to_string(index=False))

关键说明

  • 别用iterrows():手动遍历行低效且没必要,Pandas分组聚合是C级优化,速度快得多
  • groupby('Plan')指定分组键,['Quantity_y'].sum()只对目标列求和,避免冗余计算
  • as_index=False确保输出格式和你期望的一致,Plan不会变成索引列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:25:26