看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在数据分析中,我们经常需要对数据进行堆叠操作,但 Pandas 提供的 df.stack() 只能按默认索引进行操作,同时堆叠后的列名无法指定,本列我们就来解决这些问题。
我们的示例数据如下:
import pandas as pd
df = pd.DataFrame({
'a': ['a1', 'a2', 'a3'],
'b': [11, 22, 33],
'c': [44, 55, 66]
})
df
'''
a b c
0 a1 11 44
1 a2 22 55
2 a3 33 66
'''
我们需要将它转换成以下形式:
'''
x y z
0 a1 b 11
1 a1 c 44
2 a2 b 22
3 a2 c 55
4 a3 b 33
5 a3 c 66
'''
先设置堆叠时在列上示变的列为索引,然后进行堆叠操作,最后重刷索引并指定新的列名。
最终实现的代码如下:
(
df.set_index('a') # 重新设置索引
.stack() # 堆叠
.reset_index() # 重置索引
# 指定列名
.set_axis(['x', 'y', 'z'], axis=1)
)
(完)
更新时间:2024-08-18 16:30:47 标签:pandas python 堆叠