gpt4 book ai didi

python - 如何使用 Pandas 重命名重置索引上的多个列

转载 作者:太空狗 更新时间:2023-10-29 21:49:53 24 4
gpt4 key购买 nike

我想弄清楚是否有办法在您尝试重置索引时重命名 Pandas 列。我在文档中看到,如果只有一列,您可以使用“名称”参数来设置重置索引的列名,但我很好奇是否有办法对多列执行此操作。

例如:

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 不够智能,无法做到这一点,但我们可以利用方法 rename_axisrename在重置索引之前为索引和列/系列命名;一旦名称设置正确,reset_index 将自动将这些名称转换为结果中的列名称:

这里 rename_axis 给索引命名,这在某种程度上等同于 df.index.names = ... 除了函数式风格; rename 为 Series 对象命名:

df1.set_index(['B','A']).stack().rename_axis(['B','A','col2']).rename('col').reset_index()

# B A col2 col
#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
# ..

关于python - 如何使用 Pandas 重命名重置索引上的多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27324115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com