使用Multindex列堆叠Multindex数据帧

2024-06-28 20:12:21 发布

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

我试图用多个级别来堆叠数据帧的行值,用一个级别来堆叠列值。原始数据帧如下所示(其中Time是df.columns中单个级别的名称):

Time                                      +1hr   +2hr   +3hr   ... 
Cytokine Antibody Peptide Concentration
IFNg     CD28     N4     1uM              0.1    0.2.   0.3.   
TNFa.    CD28.    N4.    1uM              0.2    0.4.   0.6.   
...

我正在尝试堆叠数据帧以获得如下输出:

Cytokine                             IFNg  TNFa  ...
Antibody Peptide Concentration Time
CD28     N4.     1uM           +1hr  0.1.  0.2
CD28     N4.     1uM           +2hr  0.2.  0.4
CD28     N4.     1uM           +3hr  0.3.  0.6
...

不幸的是,df.stack()返回以下内容:

Time                                          +1hr  +2hr  +3hr ...
Cytokine Antibody Peptide Concentration Time
IFNg     CD28     N4.     1uM           +1hr  0.1.  na    na
         CD28     N4.     1uM           +2hr  na    0.2.  na
         CD28     N4.     1uM           +3hr  na    na    0.3
TNFa     CD28     N4.     1uM           +1hr  0.2.  na    na
         CD28     N4.     1uM           +2hr  na    0.4.  na
         CD28     N4.     1uM           +3hr  na    na    0.6
...

尽管pandas文档说使用单级列堆叠数据帧将输出一个系列,但当我尝试堆叠时,最终会得到一个大数据帧(即使df.columns.nlevels返回1)。当我删除列级别(Time)的名称时,它可以正常工作,但我希望保留它。我能做些什么来让堆叠正常工作吗


Tags: columns数据名称dftime级别concentrationna
1条回答
网友
1楼 · 发布于 2024-06-28 20:12:21

我自己想出来了,但我想我还是把解决方案记录下来。如果直接为列值指定了单个级别的名称(例如df.columns.name='Time'),则堆叠工作正常。单级多条件不适用于df.stack()

相关问题 更多 >