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

如何在DataFrame中对指定列按行求和并忽略NA值?

解决方案:在Pandas DataFrame中按指定列行求和并忽略NA值

没问题!这在pandas里是非常常见的操作,我给你两种实用的实现方式,完全符合你的需求——通过列名指定目标列、按行求和时自动忽略NA值:

方法一:直接赋值创建新列(修改原DataFrame)

这是最直观的方式,直接通过列名索引出目标列,调用sum()方法按行计算:

import pandas as pd

# 示例DataFrame(包含NA值)
df = pd.DataFrame({
    'Sales_Jan': [1500, 2200, None, 3100],
    'Sales_Feb': [2000, None, 2700, 1800],
    'Sales_Mar': [None, 1900, 2400, 2900]
})

# 定义要求和的目标列名列表
target_columns = ['Sales_Jan', 'Sales_Feb', 'Sales_Mar']

# 创建新列'Total_Q1',存储按行求和结果
df['Total_Q1'] = df[target_columns].sum(axis=1, skipna=True)

参数说明:

  • axis=1:指定按行求和(默认axis=0是按列求和)
  • skipna=True:自动忽略NA/NaN值(这个参数默认就是True,显式写出更清晰)

方法二:使用assign()方法(返回新DataFrame,不修改原数据)

如果你不想直接修改原DataFrame,推荐用assign()方法,它会返回一个包含新列的副本,适合链式操作:

target_columns = ['Sales_Jan', 'Sales_Feb', 'Sales_Mar']

# 生成带新列的新DataFrame,原df保持不变
new_df = df.assign(Total_Q1=df[target_columns].sum(axis=1, skipna=True))

额外小技巧:处理全NA行

如果某一行的目标列全是NA值,sum()会返回NaN。如果你想把这种情况的结果替换为0,可以追加fillna(0):

df['Total_Q1'] = df[target_columns].sum(axis=1, skipna=True).fillna(0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:50:04