我是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))
请告知
答案 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)
结果: