Python可以从另一列的列表中删除一列列表中的项目

Python可以从另一列的列表中删除一列列表中的项目,python,pandas,Python,Pandas,我有一个带有两列的数据框,两列都包含字符串列表。df['col1']和df['col2]。我试图从col1的列表中删除每一行中包含在col2列表中的所有项,并创建一个新列。例如: col1 col2 col3 [a, b, c] [a, b] [c] [a, c, f, d] [a, f] [c, d] [d, c, e, f] [d, e, f, c] [] 您可以创建自己的函数来创建新列表,然后在数据帧上

我有一个带有两列的数据框,两列都包含字符串列表。df['col1']和df['col2]。我试图从col1的列表中删除每一行中包含在col2列表中的所有项,并创建一个新列。例如:

col1           col2         col3
[a, b, c]     [a, b]        [c]
[a, c, f, d]  [a, f]        [c, d]    
[d, c, e, f]  [d, e, f, c]  []

您可以创建自己的函数来创建新列表,然后在数据帧上使用
apply
为每一行执行函数,如下所示:

import pandas as pd

df = pd.DataFrame({'col1':[['a', 'b', 'c'], ['a', 'c', 'f', 'd'], ['d', 'c', 'e', 'f']], 
                   'col2':[['a', 'b'], ['a', 'f'], ['d', 'e', 'f', 'c']]})

def func(df):
    return list(set(df['col1']) - set(df['col2']))

df['col3'] = df.apply(func, axis = 1)

函数将列表转换为集合,并使用集合减法从
col1
中删除
col2
中包含的值。我不知道你可以减去一组字符串。这太棒了helpful@miles你必须更具体地问你的问题。您需要更好地描述您的问题,然后展示用于解决问题的代码。S.O.最好用于与代码相关的可重复性问题。