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

如何将DataFrame中含'BB'行的数值求和后放入该行第一列?

解决Pandas DataFrame指定行的列求和与赋值问题

需求:针对Pandas DataFrame中ID为'BB'的行,将Q121、Q221、Q321、Q421列的数值求和,把求和结果填入该行的Q121列,同时将这一行的其他数值列(Q221、Q321、Q421)设为0。

原始数据

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  2.5  0.0  0.0  0.0

解决方案

你之前的代码存在两个问题:一是BB未加引号(字符串类型的筛选条件需要用引号包裹),二是仅计算了总和但未完成赋值操作。可以按以下步骤实现需求:

  1. 定位ID为'BB'的行,计算目标列的行总和:
total = df.loc[df['ID'] == 'BB', ['Q121', 'Q221', 'Q321', 'Q421']].sum(axis=1)

这里axis=1指定按行求和,确保只计算BB行的目标列总和。

  1. 将求和结果赋值给BB行的Q121列:
df.loc[df['ID'] == 'BB', 'Q121'] = total
  1. 将BB行的其他目标列设为0:
df.loc[df['ID'] == 'BB', ['Q221', 'Q321', 'Q421']] = 0

完整代码示例

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)

# 执行操作
total = df.loc[df['ID'] == 'BB', ['Q121', 'Q221', 'Q321', 'Q421']].sum(axis=1)
df.loc[df['ID'] == 'BB', 'Q121'] = total
df.loc[df['ID'] == 'BB', ['Q221', 'Q321', 'Q421']] = 0

print(df)

运行后即可得到预期结果。

内容的提问来源于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:10:25