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

Pandas多列匹配:基于两个DataFrame生成含存在性判断的新DataFrame

解决方法:基于两个DataFrame生成存在性标记的新DataFrame

我来帮你搞定这个需求!首先我们先把你给出的DataFrame数据用代码还原出来,然后一步步实现生成df3的逻辑。

首先,先创建示例DataFrame:

import pandas as pd

# 构建df1
df1 = pd.DataFrame({'a': ['T11552', 'T11559', 'T11566', 'T11567', 'T11569', 'T11594', 'T11604', 'T11625']})

# 构建df2
df2_data = [
    ['T11552', 'T11555'],
    ['T11560', 'T11559'],
    ['T11566', 'T11562'],
    ['T11568', 'T11565'],
    ['T11569', 'T11560'],
    ['T11590', 'T11594'],
    ['T11604', 'T11610'],
    ['T11621', 'T11625'],
    ['T11633', 'T11631'],
    ['T11635', 'T11634'],
    ['T13149', 'T13140']
]
df2 = pd.DataFrame(df2_data, columns=['a', 'b'])

接下来是核心逻辑:我们需要检查df1的每个a列值是否出现在df2的a列或者b列中。先把df2的两列合并成一个唯一值集合(这样查找效率更高),再用isin()方法生成标记列:

# 把df2的a和b列合并成一个唯一值集合
df2_values = set(df2['a'].tolist() + df2['b'].tolist())

# 生成df3:复制df1的a列,添加v列标记存在性
df3 = df1.copy()
df3['v'] = df3['a'].isin(df2_values)

运行后你就能得到符合要求的df3,比如:

  • T11552对应True(存在于df2的a列)
  • T11559对应True(存在于df2的b列)
  • T11567对应False(df2中无此值)

如果要确认结果,直接打印df3即可:

print(df3)

输出结果如下:

a      v
0  T11552   True
1  T11559   True
2  T11566   True
3  T11567  False
4  T11569   True
5  T11594   True
6  T11604   True
7  T11625   True

这个方法简洁高效,用集合存储待查找值还能在数据量大的时候提升查询速度哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:57:42