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

使用Python实现:判断列值是否存在于另一列并生成匹配新列

Python pandas 实现方案

核心逻辑以给出的输出示例为准:

  • 先提取两列的非空值集合,区分colA独有值、colB独有值、两列共有值
  • new_colA填充规则:逐行判断,若当前行colA/colB的取值属于「colA独有值 + 两列共有值」集合,就填入该值,否则填空字符串
  • new_colB填充规则:逐行判断,若当前行colB的取值属于「colB独有值」集合,就填入该值,否则填空字符串

完整实现代码

import pandas as pd

# 1. 构造示例初始数据
df = pd.DataFrame({
    'colA': ['x', 'y', '', '', '', 'd', ''],
    'colB': ['', '', 'c', 'd', 'x', '', '']
})

# 2. 提取两列非空值集合
set_A = set(df[df['colA'] != '']['colA'])
set_B = set(df[df['colB'] != '']['colB'])

# 3. 定义两列的匹配值范围
match_A = set_A  # new_colA匹配colA所有非空值(含独有+两列共有)
match_B = set_B - set_A  # new_colB仅匹配colB独有的非空值

# 4. 逐行生成新列
df['new_colA'] = df.apply(
    lambda row: row['colA'] if row['colA'] in match_A else (row['colB'] if row['colB'] in match_A else ''),
    axis=1
)
df['new_colB'] = df.apply(
    lambda row: row['colB'] if row['colB'] in match_B else '',
    axis=1
)

# 打印结果验证
print(df)

输出结果验证

运行代码后输出与预期完全一致:

colA colB new_colA new_colB
0    x             x         
1    y             y         
2         c                 c
3         d        d         
4         x        x         
5    d             d         
6                            

如果实际数据中空值是pandas的NaN而非空字符串,把集合提取和判断逻辑里的!= ''替换为pd.notna()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 11:12:26