【问题标题】:how to stack two columns如何堆叠两列
【发布时间】:2021-12-22 02:12:49
【问题描述】:

我有一个这样的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

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

【问题讨论】:

    标签: pandas stack pivot-table


    【解决方案1】:

    使用DataFrame.rename_axis 将最后一级重命名为DataFrame.stack,对于一列DataFrame 使用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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢,但我想重命名新索引,而不是列
      • df.stack().unstack(level=0).rename_axis('new index', axis=1).rename(columns={1:'new value'})
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 2018-01-15
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多