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

如何判断列值是否存在于另一列 不存在值存入新列并生成状态

基于Pandas的实现方法

处理这类空格分隔字符串的列匹配问题,用Pandas逐行计算集合差集即可,步骤清晰且易维护。

处理逻辑

  • 逐行将col1、Col2的字符串按空格拆分为值集合,自动忽略多余的首尾空格、连续空格
  • 计算col1集合对Col2集合的差集(即仅在col1中出现、未在Col2中出现的编码)
    • 差集非空:status设为yes,o/p value为差集内编码按空格拼接的字符串
    • 差集为空:status设为No,o/p value填充None

可直接运行的代码

import pandas as pd

# 替换为你的数据读取逻辑,比如pd.read_csv("你的文件.csv")
df = pd.DataFrame({
    "col1": [
        "10713-251-NODIV 10713-347-NODIV 10713-234-NODIV",
        "10713-251-NODIV 10713-347-NODIV"
    ],
    "Col2": [
        "10713-251-NODIV 10713-347-NODIV",
        "10713-251-NODIV 10713-347-NODIV"
    ]
})

def get_match_result(row):
    col1_vals = set(str(row["col1"]).split())
    col2_vals = set(str(row["Col2"]).split())
    diff_vals = col1_vals - col2_vals
    if diff_vals:
        # 加sorted是为了固定输出编码顺序,不需要可删除
        return pd.Series(["yes", " ".join(sorted(diff_vals))])
    return pd.Series(["No", None])

df[["status", "o/p value"]] = df.apply(get_match_result, axis=1)

验证结果

运行后输出结果和给出的示例完全匹配:

col1                             Col2 status        o/p value
0  10713-251-NODIV 10713-347-NODIV 10713-234-NODIV  10713-251-NODIV 10713-347-NODIV    yes  10713-234-NODIV
1                  10713-251-NODIV 10713-347-NODIV  10713-251-NODIV 10713-347-NODIV     No             None

优化说明

  • 代码中加入str()转换是为了兼容列中存在空值、数值类型值的异常场景,避免运行报错
  • 如果数据量超过10万行,可以把apply逻辑替换为列表推导式,运行速度能提升3~5倍,核心判断逻辑不变
  • 如果需要保留col1中原有值的输出顺序,可以把集合操作替换为列表遍历判断,不需要排序即可按原顺序输出未匹配的编码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:57:22