我正在尝试找出在重置索引时重命名Pandas列的方法。我在文档中看到,如果只有一列,则可以使用“name”参数来设置重置索引的列名称,但我想知道是否有一种方法可以针对多个列进行操作。
例如:
结果留给你的是:
你可以这样做:
为设置最后一列的名称,不过我在想是否有一种方法可以使用参数来设置“ level_2”列的名称。
我首先想到的是尝试:
例如:
df1 = pd.DataFrame({
'A' : ['a1', 'a1', 'a2', 'a3'],
'B' : ['b1', 'b2', 'b3', 'b4'],
'D1' : [1,0,0,0],
'D2' : [0,1,1,0],
'D3' : [0,0,1,1],
})
df1.set_index(['B','A']).stack().reset_index()
结果留给你的是:
B A level_2 0
0 b1 a1 D1 1
1 b1 a1 D2 0
2 b1 a1 D3 0
3 b2 a1 D1 0
4 b2 a1 D2 1
你可以这样做:
df1.set_index(['B','A']).stack().reset_index(name='my_col')
为设置最后一列的名称,不过我在想是否有一种方法可以使用参数来设置“ level_2”列的名称。
我首先想到的是尝试:
df1.set_index(['B','A']).stack().reset_index(name=['my_col2','my_col'])
然而,那样并没有奏效,所以我在寻找另一种方法。我意识到可以在下一行中重新命名列,但是希望有更简洁的方法只用一行完成。
reset_index()
实际上是指http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.reset_index.html,所以你只有一列。你可以做的是设置你的系列指数的列名,然后它们将保持为数据框的列名 - Roman Pekar