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

Pandas如何获取DataFrame中两列列表的交集?

计算DataFrame每行两列列表的交集

给定包含列表列的DataFrame:

import pandas as pd

df = pd.DataFrame({'one':[['a', 'b', 'c'], ['d', 'e', 'f'], ['h', 'i', 'j']], 
                   'two':[['b', 'c', 'd'], ['f', 'g', 'h'], ['l', 'm', 'n']]})

要生成包含每行两列表交集的overlap列,以下是几种实用实现方式:

方法1:apply结合集合操作(直观易读)

通过逐行将列表转为集合求交集,再转回列表:

df['overlap'] = df.apply(lambda row: list(set(row['one']) & set(row['two'])), axis=1)

方法2:列表推导式(高效处理大数据)

对于数据量较大的场景,列表推导式的执行效率比apply更高:

df['overlap'] = [list(set(o) & set(t)) for o, t in zip(df['one'], df['two'])]

方法3:保留交集元素的原顺序

如果需要维持元素在原列表(如one列)中的出现顺序,避免集合打乱顺序,可使用遍历检查的方式:

df['overlap'] = df.apply(lambda row: [x for x in row['one'] if x in row['two']], axis=1)

最终结果

执行后得到的DataFrame如下:

one         two      overlap
0  [a, b, c]  [b, c, d]  [b, c]
1  [d, e, f]  [f, g, h]     [f]
2  [h, i, j]  [l, m, n]        []

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:10:49