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

DataFrame两列匹配:移除第二列与第一列重复的值

移除DataFrame第二列中存在于第一列的值

需求说明

给定一个DataFrame,需对其中两列进行匹配:如果第二列的某个值在第一列中存在,就将第二列里的这个值移除(替换为空/NaN)。

示例输入

col1 col2
1   
2     1
3     9
4
5     1
6     2

示例输出

col1 col2
1
2
3    9
4
5
6

原因说明

第二列中的1和2都能在第一列里找到,所以要移除这些重复出现的值;而9不在第一列中,保留不动。

解决方案(Pandas实现)

可以用Pandas的isin()方法判断第二列的值是否存在于第一列,再用where()方法保留符合条件的值:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'col1': [1,2,3,4,5,6],
    'col2': [pd.NA, 1, 9, pd.NA, 1, 2]
})

# 处理逻辑:如果col2的值在col1中存在,就替换为NA(即移除)
df['col2'] = df['col2'].where(~df['col2'].isin(df['col1']))

print(df)

这段代码的逻辑:

  • df['col2'].isin(df['col1']):生成布尔序列,标记col2中哪些值存在于col1里
  • 加~取反,得到需要保留的值的标记
  • where()方法会把不满足取反后条件的位置替换为NaN,对应示例中的空值效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:31:17