Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 两列之间的列表值的对称差异_Pandas - Fatal编程技术网

Pandas 两列之间的列表值的对称差异

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

我有一个以下数据帧,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 '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很高兴我能帮上忙!如果我的答案是有用的,请考虑将它标记为接受。