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

如何在Pandas DataFrame中排除指定行计算数值列总和?

排除指定行计算DataFrame数值列总和的解决方案

需求说明

计算DataFrame内所有数值列的总和,但排除parameter列值为Production-avg的行,同时保留原数据行,仅修改总计行的数值。

原代码问题

原代码直接对所有数值列求和,未排除指定行,导致总计包含了Production-avg对应的数据:

import pandas as pd

# Example DataFrame
df = pd.DataFrame({'category': ['Production', 'Production', 'Production', 'Production', 'Production'], 'parameter': ['hello', 'Production-avg', 'Production-etf', 'ktf', 'kfc'], 'actuals': [10, 30, 50, 70, 90], 'bp': [15, 35, 55, 75, 95]})
df.loc['total'] = df.select_dtypes(include=['int64']).sum()
print(df)

修改后的代码

先过滤掉parameter列等于Production-avg的行,再对剩余行的数值列求和:

import pandas as pd

# Example DataFrame
df = pd.DataFrame({'category': ['Production', 'Production', 'Production', 'Production', 'Production'], 'parameter': ['hello', 'Production-avg', 'Production-etf', 'ktf', 'kfc'], 'actuals': [10, 30, 50, 70, 90], 'bp': [15, 35, 55, 75, 95]})

# 排除指定行后计算数值列总和
filtered_df = df[df['parameter'] != 'Production-avg']
df.loc['total'] = filtered_df.select_dtypes(include=['int64']).sum()

print(df)

输出结果

执行代码后将得到期望的总计数值:

category       parameter  actuals     bp
0      Production           hello     10.0   15.0
1      Production  Production-avg     30.0   35.0
2      Production  Production-etf     50.0   55.0
3      Production             ktf     70.0   75.0
4      Production             kfc     90.0   95.0
total         NaN             NaN    220.0  240.0

补充说明

  • 用df['parameter'] != 'Production-avg'筛选出需要参与求和的行,得到临时的filtered_df
  • 对筛选后的DataFrame数值列求和,赋值给total行
  • 原数据行完全保留,仅调整总计行数值,精准匹配需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:32:02