这里我有 18 个数据框,每个数据框都是这样的
Probe Set ID Call Codes filename
0 AX-11086525 AA DG2364
1 AX-11086526 BB
2 AX-11086527 BB
3 AX-11086528 BB
4 AX-11086529 AB
... ... ... ...
587347 AX-11714992 BB
587348 AX-11714995 AA
587349 AX-11714996 BB
587350 AX-11714997 AA
587351 AX-11714998 AA
[587352 rows x 3 columns]
我将所有这些数据帧存储在名为 dfs
的字典中,
我想保留所有 18 个数据帧中常见的探针集 ID
的所有行。
我尝试使用带有按位和的集合来查找共同的项目。
common_items = set(dfs['df_1']) & set(dfs['df_2']) & set(dfs['df_3'])...
for i in dfs.keys():
dfs[i] = dfs[i][dfs[i].isin(common_items)]
这导致了一个空数据框,我显然知道这是不正确的
Probe Set ID Call Codes filename
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
... ... ... ...
587347 NaN NaN NaN
587348 NaN NaN NaN
587349 NaN NaN NaN
587350 NaN NaN NaN
587351 NaN NaN NaN
[587352 rows x 3 columns]
请帮忙
最佳答案
set.intersection
我们可以使用set.intersection
从所有数据帧中查找Probe Set ID
列中的通用ID,然后在dict
理解中迭代关键数据帧对并查询
dataframe
以使用common_ids
过滤行。
common_ids = set.intersection(*[set(df['Probe Set ID']) for df in dfs.values()])
dfs = {k: df.query('`Probe Set ID` in @common_ids') for k, df in dfs.items()}
关于python - 检查 10 个不同集合之间的共同元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67150633/