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

如何在Python中基于字典规则为Pandas DataFrame新增Result条件判断列?

实现Pandas DataFrame新增Result列的需求

我来帮你搞定这个需求,核心思路是先给Result列设默认值Yes,再找出那些满足「任意一列匹配字典对应值」的行,把它们的Result改成其他值(这里我用No做示例,你可以根据需要改成别的)。

完整代码实现

import pandas as pd
import numpy as np

to_check= {'ColA':'Yes', 'ColB':'Y','ColC':'True'}
df = pd.DataFrame(
    {
        'ID': ['AB01', 'AB02', 'AB03', 'AB04', 'AB05','AB06','AB07','AB08'],
        'ColA': ["Yes","No",np.nan,"No", "Yes", "","", "No"],
        'ColB': ["N","","Y","", "Y", np.nan,"", "N"],
        'ColC': [np.nan,"True","False",np.nan,"False", "True", "",""],
        'Type': [85,98,84,70,50,np.nan,85,74]
    }
)

# 1. 初始化Result列为默认值'Yes'
df['Result'] = 'Yes'

# 2. 创建布尔掩码:判断每行是否有任意一列匹配to_check中的对应值
mask = pd.Series(False, index=df.index)
for col, target_val in to_check.items():
    mask |= (df[col] == target_val)

# 3. 将满足条件的行的Result改为'No'
df.loc[mask, 'Result'] = 'No'

# 查看最终结果
print(df)

代码细节解释

  • 初始化默认值:直接给新列Result赋值Yes,这是所有行的初始状态。
  • 构建匹配掩码:遍历to_check字典的每一组「列名-目标值」,用|=(逻辑或)累加判断结果——只要某一行有任意一列匹配对应目标值,掩码就会标记为True。
  • 更新目标行:用loc精准定位到掩码为True的行,把它们的Result值替换成No(你可以根据需求改成其他内容,比如'Invalid'之类的)。

运行后的示例结果

最终你会得到包含Result列的完整DataFrame,部分行示例如下:

ID  ColA ColB   ColC  Type Result
0   AB01   Yes    N    NaN  85.0     No
1   AB02    No       True  98.0     No
2   AB03   NaN    Y  False  84.0     No
3   AB04    No          NaN  70.0    Yes
...

注意:空字符串""和np.nan不会与to_check里的目标值匹配,所以这类行的Result会保持默认的Yes。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:47:39