假设我有这样一个数据帧: 在单个字符串中包含元素列表.

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

如何使用Col1和Col2中的元素的交集创建Col3

预期输出:

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

推荐答案

使用列表解析和set交集:

df['Col3'] = [', '.join(set(a.split(', ')) & set(b.split(', ')))
              for a,b in zip(df['Col1'], df['Col2'])]

输出:

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

如果您希望在空交叉点上使用NA:

df['Col3'] = [x if (x:=', '.join(set(a.split(', ')) & set(b.split(', '))))
              else pd.NA
              for a,b in zip(df['Col1'], df['Col2'])]

输出:

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

Python相关问答推荐

Tokenizer Docker:无法为Tokenizer构建轮子,这是安装pyproject.toml项目所需的

手动为pandas中的列上色

如何判断. text文件中的某个字符,然后读取该行

Flask:如何在完整路由代码执行之前返回验证

将行从一个DF添加到另一个DF

使用多个性能指标执行循环特征消除

实现的差异取决于计算出的表达是直接返回还是首先存储在变量中然后返回

计算所有前面行(当前行)中列的值

try 在树叶 map 上应用覆盖磁贴

Python中的嵌套Ruby哈希

如何让程序打印新段落上的每一行?

如何使用根据其他值相似的列从列表中获取的中间值填充空NaN数据

运输问题分支定界法&

优化器的运行顺序影响PyTorch中的预测

计算每个IP的平均值

形状弃用警告与组合多边形和多边形如何解决

可以bcrypts AES—256 GCM加密损坏ZIP文件吗?

从旋转的DF查询非NaN值

当条件满足时停止ODE集成?

Beautifulsoup:遍历一个列表,从a到z,并解析数据,以便将其存储在pdf中.