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

如何在Pandas DataFrame中对BB行指定列求和并添加新行?

Pandas:针对指定行的列分组求和并新增行

需求说明

在Pandas DataFrame中完成以下操作:

  • 定位ID为BB的行
  • 对该行的Q121、Q221列数值求和,结果放入新增行NEW的Q121列,Q221列填0
  • 对该行的Q321、Q421列数值求和,结果放入新增行NEW的Q321列,Q421列填0
  • 新增行的ID列为NEW

原始数据

ID  Q121 Q221 Q321 Q421
AA  8.0  4.8  3.1  5.3
BB  0.6  0.7  0.3  0.9

期望结果

ID  Q121 Q221 Q321 Q421
AA  8.0  4.8  3.1  5.3
BB  0.6  0.7  0.3  0.9
NEW 1.3  0.0  1.2  0.0

当前尝试代码

mask = df['ID'].eq('BB')
df[NEW] = df.iloc[2,1:2].sum()

当前代码存在的问题:

  • 依赖固定行索引iloc[2]定位BB行,若数据行顺序变化会出错
  • 切片1:2仅取了Q121列,未覆盖Q221列的求和
  • 逻辑未实现后两列的求和及新增整行的需求

优化解决方案

方案1:鲁棒性优先写法

import pandas as pd

# 构造原始DataFrame(已有数据可跳过此步骤)
data = {
    'ID': ['AA', 'BB'],
    'Q121': [8.0, 0.6],
    'Q221': [4.8, 0.7],
    'Q321': [3.1, 0.3],
    'Q421': [5.3, 0.9]
}
df = pd.DataFrame(data)

# 精准定位BB行数据
bb_row = df[df['ID'] == 'BB'].iloc[0]

# 计算分组求和值
sum_q1q2 = bb_row[['Q121', 'Q221']].sum()
sum_q3q4 = bb_row[['Q321', 'Q421']].sum()

# 构造新增行
new_row = pd.Series({
    'ID': 'NEW',
    'Q121': sum_q1q2,
    'Q221': 0.0,
    'Q321': sum_q3q4,
    'Q421': 0.0
})

# 将新增行添加到原DataFrame
df = pd.concat([df, new_row.to_frame().T], axis=0)

# 可选:重置索引
# df = df.reset_index(drop=True)

print(df)

方案2:简洁写法

import pandas as pd

data = {
    'ID': ['AA', 'BB'],
    'Q121': [8.0, 0.6],
    'Q221': [4.8, 0.7],
    'Q321': [3.1, 0.3],
    'Q421': [5.3, 0.9]
}
df = pd.DataFrame(data)

# 提取BB行的数值列
bb_vals = df.loc[df['ID'] == 'BB', ['Q121', 'Q221', 'Q321', 'Q421']].values[0]

# 直接构造新增行DataFrame并合并
new_row = pd.DataFrame({
    'ID': ['NEW'],
    'Q121': [bb_vals[0] + bb_vals[1]],
    'Q221': [0.0],
    'Q321': [bb_vals[2] + bb_vals[3]],
    'Q421': [0.0]
})

df = pd.concat([df, new_row], axis=0, ignore_index=True)

print(df)

优化点说明

  • 用df['ID'] == 'BB'定位目标行,不依赖固定行索引,数据顺序变化也能正常工作
  • 明确指定列名进行求和,避免切片歧义
  • 构造完整的新增行数据,确保所有列符合期望格式
  • 使用pd.concat安全合并行,保持DataFrame结构完整性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:26:09