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

如何在Pandas中结合eval处理多字段空值的相对条件计算

解决方案:在Pandas eval中实现带null条件的加法运算

你可以在eval的表达式中结合Pandas的null判断函数(pd.isna/pd.notna)和三元表达式,实现你需要的逻辑:仅当单个字段为null时替换为0相加,两个字段都为null时返回null。

核心表达式

直接修改你的eval语句为:

df.eval("""
result = (fieldA if pd.notna(fieldA) else 0) + (fieldB if pd.notna(fieldB) else 0) 
         if not (pd.isna(fieldA) & pd.isna(fieldB)) 
         else np.nan
""", inplace=True)

逻辑解释

  • 先判断fieldA和fieldB是否同时为null:如果是,结果直接设为np.nan(即你表格中的null)
  • 如果不是同时为null,就将单个为null的字段替换为0,再执行加法运算

完整示例代码

import pandas as pd
import numpy as np

# 构造测试数据
df = pd.DataFrame({
    'fieldA': [np.nan, np.nan, 4, 0],
    'fieldB': [np.nan, 5, 5, 6]
})

# 使用eval执行运算
df.eval("""
result = (fieldA if pd.notna(fieldA) else 0) + (fieldB if pd.notna(fieldB) else 0) 
         if not (pd.isna(fieldA) & pd.isna(fieldB)) 
         else np.nan
""", inplace=True)

print(df)

运行结果

fieldAfieldBresult
NaNNaNNaN
NaN55.0
459.0
066.0

这个方案完全基于矢量化运算,不需要循环处理,且保留了你想要的eval使用方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:52:54