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

如何在pandas DataFrame中按列分组求和并追加指定名称汇总行

Pandas 分组求和后追加固定标识行实现

原始输入数据

country   result    name  
  UK        3       created
  US        5       created
  UK        7       created
  India     4       completed
  India     6       created
  US        1       completed

目标输出

country   result    name  
  UK        3       created
  US        5       created
  UK        7       created
  India     4       completed
  India     6       created
  US        1       completed
  UK        10      pending       
  US        6       pending
  India     10      pending

实现步骤

  • 按country列分组,保留国家首次出现的顺序,对每个分组的result列求和
  • 给求和结果生成新列name,固定值为pending
  • 将生成的新行追加到原始DataFrame末尾,重置索引即可

完整代码

import pandas as pd

# 初始化原始DataFrame
df = pd.DataFrame({
    'country': ['UK', 'US', 'UK', 'India', 'India', 'US'],
    'result': [3, 5, 7, 4, 6, 1],
    'name': ['created', 'created', 'created', 'completed', 'created', 'completed']
})

# 生成待追加的pending行,sort=False保证国家顺序和首次出现顺序一致
pending_df = df.groupby('country', as_index=False, sort=False)['result'].sum().assign(name='pending')

# 拼接原始数据和新行
final_df = pd.concat([df, pending_df], ignore_index=True)

运行后final_df的输出和目标结果完全一致。

注:如果后续数据中存在name值不是created/completed的行,只需要在分组前增加筛选逻辑即可,将生成pending_df的代码替换为:

pending_df = df[df['name'].isin(['created', 'completed'])]\
              .groupby('country', as_index=False, sort=False)['result'].sum()\
              .assign(name='pending')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:27:21