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

如何检查Pandas DataFrame值是否匹配字典规则并生成exist_or_not列

实现方案

核心逻辑

  • 逐行匹配supplierid从参考字典中取对应允许的name列表
  • 校验当前行name是否在允许列表内,匹配填yes,不匹配填no

代码实现

首先导入依赖、构造示例数据和参考字典:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'orderid': [101, 102, 103],
    'supplierid': [1, 1, 2],
    'name': ['x', 'z', 'x']
})

# 参考校验字典
ref_dict = {1: {'name': ['x', 'y']}, 2: {'name': ['z']}}

方法1:逐行apply判断(逻辑直观,适合小数据量)

df['exist_or_not'] = df.apply(
    lambda row: 'yes' if row['name'] in ref_dict[row['supplierid']]['name'] else 'no',
    axis=1
)

方法2:预构造映射再判断(性能更高,适合大数据量)

# 提前提取供应商到允许名称列表的映射,减少重复取值操作
supplier_name_map = {sid: val['name'] for sid, val in ref_dict.items()}
# 把允许列表映射到DataFrame中再判断
df['exist_or_not'] = df.apply(
    lambda x: 'yes' if x['name'] in supplier_name_map[x['supplierid']] else 'no',
    axis=1
)

输出结果验证

运行后输出df即可得到预期结果:

orderidsupplieridnameexist_or_not
1011xyes
1021zno
1032xno

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 07:06:06