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

如何基于ID和index对比两个Pandas DataFrame并生成pred列?

问题描述

现有两个Pandas DataFrame:

import pandas as pd

df1 = pd.DataFrame({
    'ID': ['087', '087', '087'],
    'index': [4, 5, 6]
})

df2 = pd.DataFrame({
    'ID': ['087'] * 12,
    'index': range(1, 13)
})

需求:基于ID和index列对比两个DataFrame,生成结果DataFrame并新增pred列——当该行同时存在于df1中时,pred值为1,否则为0,最终结果示例如下:

# 示例结果
   ID  index  pred
0  087      1     0
1  087      2     0
2  087      3     0
3  087      4     1
4  087      5     1
5  087      6     1
6  087      7     0
...
11 087     12     0
简洁实现方案

方法一:左连接+填充空值

这是最直观高效的方式,利用Pandas的合并操作实现:

# 先给df1添加pred=1的列,再与df2左连接
result_df = df2.merge(df1.assign(pred=1), on=['ID', 'index'], how='left')
# 将空值填充为0,完成标记
result_df['pred'] = result_df['pred'].fillna(0).astype(int)

方法二:元组集合匹配

通过将行数据转为元组,利用集合判断存在性:

# 提取df1中(ID, index)的元组集合
df1_key_set = set(df1[['ID', 'index']].itertuples(index=False, name=None))
# 对df2每行生成元组,判断是否在集合中,转为整数标记
result_df = df2.assign(
    pred=df2[['ID', 'index']].apply(tuple, axis=1).isin(df1_key_set).astype(int)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:20:29