Python 如何逐行从dataframe中删除列出的条目?

Python 如何逐行从dataframe中删除列出的条目?,python,pandas,list,dataframe,sublist,Python,Pandas,List,Dataframe,Sublist,我有两个单独的数据帧,每个数据帧大约有100k行。一个数据帧包含符合条件a的列名列表(列标题“列表a”),另一个(列标题“列表B”)包含不符合条件B的列名列表(根据特定于其相关数据帧的单独信息计算)。我试图创建一个符合这两个条件的名称列表,方法是从列表a中删除列表B中的名称,而不使用循环。这可能吗 例如,拉动列“list_A”可能如下所示: [['X','Y','Z','A'], ['X','Y','Z','A'], ['Y','Z','A']...] [[

我有两个单独的数据帧,每个数据帧大约有100k行。一个数据帧包含符合条件a的列名列表(列标题“列表a”),另一个(列标题“列表B”)包含不符合条件B的列名列表(根据特定于其相关数据帧的单独信息计算)。我试图创建一个符合这两个条件的名称列表,方法是从列表a中删除列表B中的名称,而不使用循环。这可能吗

例如,拉动列“list_A”可能如下所示:

    [['X','Y','Z','A'],
     ['X','Y','Z','A'],
     ['Y','Z','A']...]
    [['Z'],
     [],
     ['A']...]
“列表B”可能是这样的:

    [['X','Y','Z','A'],
     ['X','Y','Z','A'],
     ['Y','Z','A']...]
    [['Z'],
     [],
     ['A']...]
最后我想说的是:

    [['X','Y','A'],
     ['X','Y','Z','A'],
     ['Y','Z']...]

有没有一种方法可以在不花费时间的情况下完成这项工作?

如果顺序不重要,请尝试此方法

df['list_A'] = df.apply(lambda x: list(set(x['list_A']) - set(x['list_B'])), axis=1)

您可以通过以下方式进行操作(可能有更高性能的方法,但列中的列表不适合高速向量化操作)


这应该有助于回答您的问题:它们是在数据框中还是如图所示的列表列表中?数据帧是否具有相同的长度(即df1中的行1是否与df2中的行1匹配?)列表是数据帧中的列。是的,它们具有相同的长度和行匹配。list_B是否最多有1个元素?是的,每个条目都是数据框中满足条件的列名称的单个列表巴哈比我快!确切地说,第一行应该是
df=pd.DataFrame({“a”:[['X','Y','Z','a'],['X','Y','Z','a'],['Y','Z','a']],“b:[[Z'],['a']])
以匹配所需的输出。尽管如此,它仍然有效。@JeromeMontino完全正确,我已经更新了我的答案。我打赌你总是在考试时读这道题;)哈哈,我多么希望。无论哪种方式,代码都简洁且性能良好。不错