如何逐行从数据框中删除列出的条目?
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)
我有两个独立的数据框,每个数据框大约有 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)