<p>我希望避免循环以加快进程。因此,我们将这三个数据帧重新组合成一个长格式。在新的数据框中将它们组合在一起,并聚合最小p值。用获得的基因名称和P值提取一个新的数据框。与您的逻辑不同的是提取组名的时间。与P值对应的组名从一开始就获得。如果这种方法是错误的,我们只能帮助您部分加快流程。谢谢你的理解</p>
<pre><code>g0 = pd.concat([names['g0'],pvalues['g0'],foldchanges['g0']],axis=1)
g0.columns = ['names','pvalues','foldchanges']
g0['group'] = 'g0'
g1 = pd.concat([names['g1'],pvalues['g1'],foldchanges['g1']],axis=1)
g1.columns = ['names','pvalues','foldchanges']
g1['group'] = 'g1'
g2 = pd.concat([names['g2'],pvalues['g2'],foldchanges['g2']],axis=1)
g2.columns = ['names','pvalues','foldchanges']
g2['group'] = 'g2'
g3 = pd.concat([names['g3'],pvalues['g3'],foldchanges['g3']],axis=1)
g3.columns = ['names','pvalues','foldchanges']
g3['group'] = 'g3'
all_df = pd.concat([g0, g1, g2, g3], axis=0)
gb = all_df.groupby('names')['pvalues'].agg('min').reset_index()
all_df[(all_df['names'].isin(gb['names'])) & (all_df['pvalues'].isin(gb['pvalues']))]
names pvalues foldchanges group
1 Hspg2 0.004153 59.926384 g1
3 Serpinh1 0.007515 30.217304 g1
5 Lgr5 0.003352 15.884651 g1
7 Slc6a6 0.003947 99.277559 g1
8 Tpm1 0.000299 36.480099 g1
3 Fxyd3 0.000485 0.583842 g2
6 App 0.000566 23.006282 g2
0 Apoe 0.003422 11.763652 g3
1 Ltbp3 0.003203 25.222484 g3
9 Krt15 0.005134 80.433481 g3
</code></pre>