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

基于多条件对Pandas DataFrame行求和的正确方法

解决方案

要实现你需要的按条件求和并添加新行的操作,核心是正确筛选符合条件的行,再计算求和,最后将结果作为新行插入。

先纠正你代码里的错误:

  1. 你用'Solar' ^ 'Wind'或直接用|连接字符串是完全错误的——这些操作符是对布尔值进行逻辑运算,不能直接用来连接字符串条件。
  2. 用&同时判断PRODUCT等于两个不同值,逻辑上不可能有同时满足的行,所以筛选结果为空,求和自然无效。

正确操作步骤:

1. 筛选目标行并计算求和

有两种等价的筛选方式:

方式一:使用isin()(推荐,多值筛选更简洁)
import pandas as pd

# 筛选符合条件的行
target_rows = test3.loc[
    (test3['SCENARIO'] == 'Stated') &
    (test3['FLOW'] == 'Total energy supply') &
    (test3['PRODUCT'].isin(['Solar', 'Wind']))
]

# 计算2030列的求和值
total = target_rows['2030'].sum()
方式二:用|连接多个等于条件(注意每个条件要加括号)
target_rows = test3.loc[
    (test3['SCENARIO'] == 'Stated') &
    (test3['FLOW'] == 'Total energy supply') &
    ((test3['PRODUCT'] == 'Solar') | (test3['PRODUCT'] == 'Wind'))
]

total = target_rows['2030'].sum()

2. 将求和结果作为新行添加到DataFrame

# 构造新行数据,列名必须和原DataFrame一致
new_row = pd.DataFrame({
    'SCENARIO': ['Stated'],
    'PRODUCT': ['Solar+Wind'],  # 可以自定义这个新行的PRODUCT名称
    'FLOW': ['Total energy supply'],
    '2030': [total]
})

# 合并原DataFrame和新行,重置索引避免重复
test3 = pd.concat([test3, new_row], ignore_index=True)

执行完后,你的DataFrame就会新增一行,2030列的值为41.483,符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:06:03