Python 检查10个不同集合之间的公共元素

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

这里我有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的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的第二种方法