如何堆叠两列

how to stack two columns

我有一个 df 是这样的:

                                 C  CF
NO FROMNODENO TONODENO                
1  1          2         582.551074   0
   2          1         809.018213   0

我想得到这个:

                                   new value
NO FROMNODENO TONODENO new index            
1  1          2        C          582.551074
   2          1        C          809.018213
   1          2        CF           0.000000
   2          1        CF           0.000000

请注意,开头可能会有更多列,其中一些不应更改。怎么做?以及如何设置新索引的名称,其值来自堆栈索引的标签?

可以堆叠和取消堆叠。根据需要重命名列

df.stack().unstack(level=0).rename(columns={1:'new value'}).reset_index()

使用DataFrame.rename_axis for rename last level with DataFrame.stack, for one column DataFrame use Series.to_frame:

df = df.rename_axis('new index', axis=1).stack().to_frame('new value')
print (df)
                                   new value
NO FROMNODENO TONODENO new index            
1  1          2        C          582.551074
                       CF           0.000000
   2          1        C          809.018213
                       CF           0.000000