Python Pandas获得2个列表的差异

时间:2019-07-11 10:04:43

标签: python python-3.x pandas list

我是python pandas的新手,我遇到了一个问题:要在pandas数据框中找到2个列表的差异。

带有;分隔符的示例输入:

ColA; ColB  
A,B,C,D; B,C,D  
A,C,E,F; A,C,F  

预期输出:

ColA; ColB; ColC  
A,B,C,D; B,C,D; A  
A,C,E,F; A,C,F; E  

我想做的事情类似于:

df['ColC'] = np.setdiff1d( df['ColA'].str.split(','), df['ColB'].str.split(','))

但是它返回错误:

  

提高ValueError('值的长度与索引的长度不匹配',data,index,len(data),len(index))

请告知

1 个答案:

答案 0 :(得分:0)

您可以这样做:

import pandas as pd

# creating DataFrame (can also be loaded from a file)
df = pd.DataFrame([[['A', 'B', 'C', 'D'], ['B', 'C']]], columns=['ColA', 'ColB'])

# apply a lambda function to get the difference
df['ColC'] = df[['ColA', 'ColB']].apply(lambda x: [i for i in x[0] if i not in x[1]], axis=1)

结果:

enter image description here