熊猫对称差异2列之间的列表值

时间:2018-11-28 00:24:58

标签: pandas

我有一个以下数据框df:

                     A                   B
 0  [ACL1, ACL2, ACL3]  [ACL1, ACL4, ACL2]

我想对A和B列表执行symmetric_difference,以便输出为[ACL3,ACL4]

df1 = df['A'].symmetric_difference(df['B'])
print (df1)

AttributeError: 'Series' object has no attribute 'symmetric_difference'

但是它给出了以上错误。...我做错了吗?如何完成最终输出?

谢谢..

2 个答案:

答案 0 :(得分:1)

问题在于symmetric_differencesets的一种方法,您可以这样做:

import pandas as pd

data = [[['ACL1', 'ACL2', 'ACL3'], ['ACL1', 'ACL4', 'ACL2']]]
df = pd.DataFrame(data=data, columns=['A', 'B'])


def symmetric_difference(x):
    return list(set(x.A).symmetric_difference(x.B))


result = df[['A', 'B']].apply(symmetric_difference, axis=1)

print(result)

输出

0    [ACL3, ACL4]
dtype: object

答案 1 :(得分:0)

如果在乎性能

[list(set(x).symmetric_difference(set(y))) for x , y in zip (df.A,df.B)]
[['ACL3', 'ACL4']]