如何根据存储在另一个datafram中的列名选择列

2024-10-01 00:24:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有2个df,df1的哪个部分如下所示[1101行x 139列]

             GP9       VWF      ALOX12    C1orf198    MPL     PTGS1  
0           2.884147  2.189103  1.323701  1.411450  6.615392  5.637339
1           4.788212  0.434247  1.449879  1.313428  7.236131  5.770543
2           1.710748  3.370917  2.798043  1.531801  6.318867  5.261016
3           2.030750  4.599848  2.312753  2.626536  6.296336  5.823157
4           0.615780  3.480914  2.158669  1.939806  6.108159  6.000171
5           1.015158  2.282270  1.207885  1.630455  6.516448  5.638960

数据帧头存储在另一个数据帧df2中,df2的一部分如下所示[135行x 2列]

^{pr2}$

我计算了这些基因df2的p值,p值小于0.05意味着这个基因对我的进一步研究很重要。所以我需要从df1中筛选出这些基因。在

有人知道如何从df2中的基因名称中选择df1中的列?谢谢


Tags: 数据名称df基因mpldf1df2pr2
2条回答
df2.loc[df2['P_value'].lt(0.05), 'gene_name']

返回满足p值条件的基因名。您可以使用此列表从df1中选择列:

^{pr2}$

如果df2有没有出现在df1中的其他基因名,这将引发KeyError。如果是这样,请使用交叉点:

df1[df1.columns.intersection(df2.loc[df2['P_value'].lt(0.05), 'gene_name'])]

或者

df1[df1.columns & (df2.loc[df2['P_value'].lt(0.05), 'gene_name'])]

首先选择p_值小于0.5的列名

cols = list(df2[df2['P_value'] < 0.05]['gene_name'])

然后从df1中筛选出列

^{pr2}$

相关问题 更多 >