我有一个以下数据框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'
但是它给出了以上错误。...我做错了吗?如何完成最终输出?
谢谢..
答案 0 :(得分:1)
问题在于symmetric_difference
是sets的一种方法,您可以这样做:
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']]