【问题标题】:How to control the header's title of index obtained from pandas df.reset_index() twice如何控制两次从pandas df.reset_index() 获得的索引的标题标题
【发布时间】:2018-05-24 21:24:38
【问题描述】:

我在我的代码中做了两次df.reset_index()。第一次重置为我提供了标题中带有“索引”的新列。我可以更改吗?

aaa = df.reset_index().melt(['prot', iso_head,'index'], mz_header)

           prot    isoab0  index   variable       value
39   ALBU_HUMAN  0.508396     39  [M+2H+]2+  593.284410
669  ALBU_HUMAN  0.508396     39  [M+3H+]3+  395.858700
670  ALBU_HUMAN  0.504033     40  [M+3H+]3+  399.201120

因为当我在第二轮(.dropna() 之后)执行df.reset_index() 时,第一列的实际索引更改为'level_0' 列。 'index' 列仍然如上所示。新的重置索引列位于第一列。这非常令人困惑。为什么这次.reset_index() 不像第一轮那样给我标题为“索引”的新列?管理许多索引列的好方法是什么?丢掉一些好不好?

aaa = aaa.dropna().sort_values('index')
aaa = aaa.reset_index()

    level_0        prot    isoab0  index   variable       value
50       39  ALBU_HUMAN  0.508396     39  [M+2H+]2+  593.284410
51      669  ALBU_HUMAN  0.508396     39  [M+3H+]3+  395.858700
52      670  ALBU_HUMAN  0.504033     40  [M+3H+]3+  399.201120

【问题讨论】:

    标签: python python-2.7 pandas indexing


    【解决方案1】:

    那是因为你已经有一个名为 index 的列,如果你想要一个替代名称,你可以在重新索引之前使用 rename_axis,即

    df.rename_axis('INDEX').reset_index()
    

    还使用 .name 设置索引名称,即(感谢@coldspeed):

    df.index.name = 'INDEX'
    df.reset_index()
    
       INDEX        prot    isoab0  index   variable      value
    0     39  ALBU_HUMAN  0.508396     39  [M+2H+]2+  593.28441
    1    669  ALBU_HUMAN  0.508396     39  [M+3H+]3+  395.85870
    2    670  ALBU_HUMAN  0.504033     40  [M+3H+]3+  399.20112
    

    【讨论】:

    • 做得很好。你已经打败了我几秒钟。也可以添加您可以设置df.index.name = ...
    猜你喜欢
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 2020-11-16
    • 2013-08-04
    • 1970-01-01
    • 2020-04-24
    相关资源
    最近更新 更多