我如何比较数据框两列中的列表并确定一个列表的元素是否在另一个列表中并创建包含缺失元素的另一列。
数据框看起来像这样:
df = pd.DataFrame({'A': ['a1', 'a2', 'a3'],
'B': [['b1', 'b2'], ['b1', 'b2', 'b3'], ['b2']],
'C': [['c1', 'b1'], ['b3'], ['b2', 'b1']],
'D': ['d1', 'd2', 'd3']})
我想比较C列的元素是否在B列,并将缺失值输出到E列,期望的输出是:
df = pd.DataFrame({'A': ['a1', 'a2', 'a3'],
'B': [['b1', 'b2'], ['b1', 'b2', 'b3'], ['b2']],
'C': [['c1', 'b1'], ['b3'], ['b2', 'b1']],
'D': ['d1', 'd2', 'd3']
'E': ['b2', ['b1','b2'],'']})
请您参考如下方法:
喜欢你的previous related question ,您可以使用列表理解。作为一般规则,您不应该强制使用多种不同类型的输出,例如list 或 str,具体取决于结果。因此,我在整个解决方案中都选择了列表。
df['E'] = [list(set(x) - set(y)) for x, y in zip(df['B'], df['C'])]
print(df)
A B C D E
0 a1 [b1, b2] [c1, b1] d1 [b2]
1 a2 [b1, b2, b3] [b3] d2 [b1, b2]
2 a3 [b2] [b2, b1] d3 []
