我在代码中执行df.reset_index()
两次。第一次重置为我提供了一个带有' 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
因为当我df.reset_index()
进行第二轮(.dropna()
之后)时,第一列的实际索引会更改为'level_0'
列。 '指数'列仍然如上所述。新的重置索引列位于第一列。这非常令人困惑。为什么.reset_index()
这次没有为我提供标题为' 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
答案 0 :(得分:3)
那是因为你已经有一个名为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