在DataFram中将标头拆分为多个标头

2024-10-05 10:07:38 发布

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

我有一个DataFrame,我需要将头分割成多行,作为同一个DataFrame的头。在

数据帧看起来像这样

我的数据框如下所示

gene    ALL_ID_1    AML_ID_1    AML_ID_2    AML_ID_3    AML_ID_4    AML_ID_5    Stroma_ID_1 Stroma_ID_2 Stroma_ID_3 Stroma_ID_4 Stroma_ID_5 Stroma_CR_Pat_4 Stroma_CR_Pat_5 Stroma_CR_Pat_6 Stroma_CR_Pat_7 Stroma_CR_Pat_8
ENSG    8   1   11  5   10  0   628 542 767 578 462 680 513 968 415 623
ENSG    0   0   1   0   0   0   0   28  1   3   0   1   4   0   0   0
ENSG    661 1418    2580    6817    14727   5968    9   3   5   9   2   9   3   3   5   1
ENSG    20  315 212 8   790 471 1283    2042    1175    2839    1110    857 1880    1526    2262    2624
ENSG    11  26  24  9   11  2   649 532 953 463 468 878 587 245 722 484

我要把上面的标题按如下方式吐出来

^{pr2}$

如有任何帮助,我们将不胜感激。。在


Tags: 数据id标题dataframe方式allcrgene
1条回答
网友
1楼 · 发布于 2024-10-05 10:07:38

可能不是你放在这里的最好的例子,很少有人有学科知识来理解在你的上下文中什么是networknode和{}。在

您只需创建MultiIndex,并用您创建的列索引替换列索引:

您的示例中有3条规则:

  • 1,只要找到“stromo”,该列就属于REL,否则属于{}。在
  • 2,node是初始列名的第一个字段
  • 3,hemi是初始列名的最后一个字段

然后,只需编写代码:

In [110]:
df.columns = pd.MultiIndex.from_tuples(zip(np.where(df.columns.str.find('Stroma')!=-1, 'REL', 'ID'),
                                           df.columns.map(lambda x: x.split('_')[0]),
                                           df.columns.map(lambda x: x.split('_')[-1])), 
                                       names=['network', 'node', 'hemi'])

print df

network   ID                                   REL                          \
node     ALL   AML                          Stroma                           
hemi       1     1     2     3      4     5      1     2     3     4     5   
gene                                                                         
ENSG       8     1    11     5     10     0    628   542   767   578   462   
ENSG       0     0     1     0      0     0      0    28     1     3     0   
ENSG     661  1418  2580  6817  14727  5968      9     3     5     9     2   
ENSG      20   315   212     8    790   471   1283  2042  1175  2839  1110   
ENSG      11    26    24     9     11     2    649   532   953   463   468   

network                               
node                                  
hemi       4     5     6     7     8  
gene                                  
ENSG     680   513   968   415   623  
ENSG       1     4     0     0     0  
ENSG       9     3     3     5     1  
ENSG     857  1880  1526  2262  2624  
ENSG     878   587   245   722   484  

相关问题 更多 >

    热门问题