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

如何在Pandas中查找两列列表的首个公共元素

问题:找出每行两列列表的首个公共元素

我有一个包含两列的数据集,每列均由整数列表组成,需要找出每行中两列列表的首个公共元素。

示例输入数据:

import pandas as pd
d = {'col1': [[1,2,3,5], [3,4,5]], 'col2': [[2,3,4], [3,5]]}
df = pd.DataFrame(data=d)

对应的DataFrame:

col1       col2
0  [1, 2, 3, 5]  [2, 3, 4]
1     [3, 4, 5]     [3, 5]

期望得到的结果DataFrame:

d = {'result': [2,3]}
expect_df = pd.DataFrame(data=d)

对应的结果:

result
0       2
1       3

解决方案

方法1:使用apply遍历行

定义函数逐个检查col1中的元素是否存在于col2中,返回第一个匹配项。为提升查找效率,先将col2转为集合:

def find_first_common(row):
    col2_set = set(row['col2'])
    for num in row['col1']:
        if num in col2_set:
            return num
    return None  # 无公共元素时返回None

df['result'] = df.apply(find_first_common, axis=1)
# 提取结果列
result_df = df[['result']]
print(result_df)

方法2:列表推导式(更简洁)

用生成器表达式配合next函数,直接遍历每行的两个列表,快速定位首个公共元素:

df['result'] = [next((x for x in col1 if x in set(col2)), None) 
                for col1, col2 in zip(df['col1'], df['col2'])]

result_df = df[['result']]
print(result_df)

两种方法都能得到期望结果,将col2转为集合的操作可大幅降低查找时间复杂度,适合处理大规模数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:12:08