Pandas 两列之间的列表值的对称差异
我有一个以下数据帧,df:Pandas 两列之间的列表值的对称差异,pandas,Pandas,我有一个以下数据帧,df: A B 0 [ACL1, ACL2, ACL3] [ACL1, ACL4, ACL2] 我想在a和B列表上执行对称的_差,这样输出将是[ACL3,ACL4] df1 = df['A'].symmetric_difference(df['B']) print (df1) AttributeError: 'Series' object has no attribute 'symmetr
A B
0 [ACL1, ACL2, ACL3] [ACL1, ACL4, ACL2]
我想在a和B列表上执行对称的_差,这样输出将是[ACL3,ACL4]
df1 = df['A'].symmetric_difference(df['B'])
print (df1)
AttributeError: 'Series' object has no attribute 'symmetric_difference'
但它给出了一个以上的错误……我做错了吗?如何完成最终输出
谢谢。问题在于
对称_差
是一种方法,您可以执行以下操作:
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
如果你在乎表演的话
[list(set(x).symmetric_difference(set(y))) for x , y in zip (df.A,df.B)]
[['ACL3', 'ACL4']]
嗨,丹尼尔…我升级了熊猫,它工作了。。。。。但是如何让“设备”名称反映在与输出相同的行上?0[ACL3,ACL4]1[/2[ACL6,ACL7]数据类型:object您可以添加
df[[A',B']]。将(symmetric_difference,axis=1)
作为一个新列应用到您的数据框中。您让我开心!!。。。。df['DIFF']=df['A',B'].apply(对称差分,轴=1)对我来说已经足够好了…@Michael很高兴我能帮上忙!如果我的答案是有用的,请考虑将它标记为接受。