如何将熊猫数据框的索引转换为列

新手上路,请多包涵

这似乎很明显,但我似乎无法弄清楚如何将数据框的索引转换为列?

例如:

 df=
        gi       ptt_loc
 0  384444683      593
 1  384444684      594
 2  384444686      596

到,

 df=
    index1    gi       ptt_loc
 0  0     384444683      593
 1  1     384444684      594
 2  2     384444686      596

原文由 msakya 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 335
2 个回答

任何一个:

 df['index1'] = df.index

或者, .reset_index

 df = df.reset_index(level=0)


因此,如果您有一个具有 3 级索引的多索引框架,例如:

 >>> df
                       val
tick       tag obs
2016-02-26 C   2    0.0139
2016-02-27 A   2    0.5577
2016-02-28 C   6    0.0303

并且您想将索引中的第一个( tick )和第三个( obs )级别转换为列,您可以这样做:

 >>> df.reset_index(level=['tick', 'obs'])
          tick  obs     val
tag
C   2016-02-26    2  0.0139
A   2016-02-27    2  0.5577
C   2016-02-28    6  0.0303

原文由 behzad.nouri 发布,翻译遵循 CC BY-SA 4.0 许可协议

rename_axis + reset_index

您可以先将索引重命名为所需的标签, 然后 提升为系列:

 df = df.rename_axis('index1').reset_index()

print(df)

   index1         gi  ptt_loc
0       0  384444683      593
1       1  384444684      594
2       2  384444686      596

这也适用于 MultiIndex 数据帧:

 print(df)
#                        val
# tick       tag obs
# 2016-02-26 C   2    0.0139
# 2016-02-27 A   2    0.5577
# 2016-02-28 C   6    0.0303

df = df.rename_axis(['index1', 'index2', 'index3']).reset_index()

print(df)

       index1 index2  index3     val
0  2016-02-26      C       2  0.0139
1  2016-02-27      A       2  0.5577
2  2016-02-28      C       6  0.0303

原文由 jpp 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题