Skip to main content
 首页 » 编程设计

python之比较数据框列中的嵌套列表值

2025年05月04日14lidabo

我如何比较数据框两列中的列表并确定一个列表的元素是否在另一个列表中并创建包含缺失元素的另一列。

数据框看起来像这样:

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        []