Python 检查10个不同集合之间的公共元素
这里我有18个数据帧,每个看起来像这样Python 检查10个不同集合之间的公共元素,python,pandas,dataframe,Python,Pandas,Dataframe,这里我有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
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的dict中,
我想保留在所有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
从所有数据帧中的Probe set ID
列中查找公共ID,然后在dict
理解中迭代关键数据帧对,并query
查询dataframe
以过滤具有公共\u ID
的行
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()}
Can
探测集ID
可能会在同一个df
中出现多次?@correlian否这是第一列的名称非常感谢分享产生此错误的第一个方法回溯(最近一次调用):File“/mnt/c/Users/haziq/Documents/dev/python/combine files/cleanfile.py”,第40行,在公共_ID=np.intersect1d(*[df['Probe Set ID']用于dfs.values()]文件“”的第4行中,在intersect1d TypeError:_intersect1d_dispatcher()中从2个位置参数到4个位置参数,但给出了19个
,但第二种方法工作完美,这要感谢@ShubhamSharma@maskedpirate请使用set.intersection的第二种方法