我有两个列数相同但行数不同的 df。
df1
col1 col2
0 a 1,2,3,4
1 b 1,2,3
2 c 1
df2
col1 col2
0 b 1,3
1 c 1,2
2 d 1,2,3
3 e 1,2
df1 是现有列表,df2 是更新列表。预期结果是 df2 中以前不在 df1 中的任何结果。
预期结果:
col1 col2
0 c 2
1 d 1,2,3
2 e 1,2
我试过了
mask = df1['col2'] != df2['col2']
但它不适用于不同的 df 行。
答案 0 :(得分:1)
通过col2
列中的拆分值使用DataFrame.explode
,然后将DataFrame.merge
与right join
和指示参数一起使用,仅通过boolean indexing
过滤具有{{1}的行}} 和最后一个聚合 right_only
:
join