如何逐行从数据框中删除列出的条目?

How to remove listed entries from dataframe by row?

我有两个独立的数据框,每个数据框大约有 10 万行。一个数据框包含满足标准 A 的列名列表(列标题 "list_A"),另一个数据框(列标题 "list_B")包含不符合标准 B 的名称列表(根据单独的特定信息计算到他们的相关数据框)。我试图通过在不使用循环的情况下从列表 A 中删除列表 B 中的名称来创建满足这两个条件的名称列表。这可能吗?

例如,拉取列"list_A"可能是这样的:

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

而"list_B"可能是这样的:

    [['Z'],
     [],
     ['A']...]

最后我想这样:

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

有没有没有 time-expensive for 循环的方法?

如果顺序无关紧要,试试这个

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

您可以通过以下方式进行,(也许更高效的方式是可能的,但列中的列表不适合高速矢量化操作)

df = pd.DataFrame({"a":[['X','Y','Z','A'],['X','Y','Z','A'],['Y','Z','A']], "b":[['Z'], [], ['A']]})

df.apply(lambda x: list(set(x["a"]).difference(set(x["b"]))), axis=1)