我正在尝试堆叠一个数据帧,该数据帧的行值具有多个级别,而其列值具有单个级别。原始数据框如下所示(其中“时间”是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,我最终还是得到了一个大数据帧。当我删除列级别的名称(时间)时,它可以很好地工作,但我想保留该名称。我可以做些什么才能使堆栈正常工作?
答案 0 :(得分:0)
我自己想出了办法,但认为我也最好记录一下解决方案。如果直接为列值指定了单个级别的名称(例如df.columns.name ='Time'),则按预期进行堆叠。单级多重对象不适用于df.stack()。