Pandas 列差异,包含列表

Pra*_*han 2 python list dataframe pandas

我有一个数据框,其中列出了列值,并且想要查找两列之间的差异,或者换句话说,我想查找 A 列中 B 列中不存在的所有元素。

data={'NAME':['JOHN','MARY','CHARLIE'],
  'A':[[1,2,3],[2,3,4],[3,4,5]],
  'B':[[2,3,4],[3,4,5],[4,5,6]]}
df=pd.DataFrame(data)
df=df[['NAME','A','B']]

#I'm able to concatenate
df['C']=df['A']+df['B']

    NAME    A   B   C
  0 JOHN    [1, 2, 3]   [2, 3, 4]   [1, 2, 3, 2, 3, 4]
  1 MARY    [2, 3, 4]   [3, 4, 5]   [2, 3, 4, 3, 4, 5]
  2 CHARLIE [3, 4, 5]   [4, 5, 6]   [3, 4, 5, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

有什么办法可以找出差异吗?

df['C']=df['A']-df['B']
Run Code Online (Sandbox Code Playgroud)

我知道我们可以使用df.apply一个函数,但逐行处理会运行缓慢,因为我有大约 400K 行。我正在寻找一种直接的方法,例如

df['C']=df['A']+df['B']
Run Code Online (Sandbox Code Playgroud)

chr*_*isb 10

对于设定的差异,

df['A'].map(set) - df['B'].map(set)
Run Code Online (Sandbox Code Playgroud)