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

如何在Pandas DataFrame中基于两列元素交集生成新列?

解决方法

步骤说明

要生成Col3列获取每行Col1和Col2的元素交集,核心是先将逗号分隔的字符串转为集合,利用集合的交集操作快速匹配,再将结果转回指定格式。

完整代码

import pandas as pd

# 初始化原始DataFrame
data = {'Col1': ["apple, banana, orange", "dog, cat", "python, java, c++"],
        'Col2': ["banana, lemon, blueberry", "bird, cat", "R, fortran"]
       }
df = pd.DataFrame(data)

# 定义处理每行交集的函数
def get_row_intersection(row):
    # 分割字符串并去除元素前后空格,转为集合
    col1_items = set(item.strip() for item in row['Col1'].split(','))
    col2_items = set(item.strip() for item in row['Col2'].split(','))
    # 计算交集
    intersection = col1_items & col2_items
    # 返回结果:交集非空则拼接为字符串,否则返回pd.NA
    return ', '.join(intersection) if intersection else pd.NA

# 应用函数生成Col3列
df['Col3'] = df.apply(get_row_intersection, axis=1)

print(df)

代码解释

  1. 字符串转集合:使用split(',')拆分逗号分隔的字符串,再通过strip()去除每个元素的前后空格,避免因空格导致匹配失败(比如" banana"和"banana"会被识别为不同元素),最后转为集合方便做交集运算。
  2. 交集计算:利用集合的&运算符直接获取两个集合的交集。
  3. 结果格式化:如果交集不为空,用', '.join()将元素拼接为字符串;如果交集为空,返回pd.NA符合预期输出。

运行后得到的DataFrame与预期一致:

Col1                      Col2    Col3
0  apple, banana, orange  banana, lemon, blueberry  banana
1              dog, cat               bird, cat     cat
2    python, java, c++                R, fortran     <NA>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:22:38