Pandas数据重塑与轴向旋转:stack、unstack与pivot详解
本文详细介绍Pandas库中数据重塑与轴向旋转的核心方法。通过stack和unstack函数实现列索引与行索引的相互转换,并深入讲解pivot函数如何利用指定索引和值构建宽表。文章包含完整代码示例与输出结果,帮助开发者掌握长宽表转换技巧。
Pandas数据重塑与轴向旋转概述
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
一、数据重塑
- stack()函数:将数据的列索引转换为行索引,实现从宽表到长表的转换。
- unstack()函数:将数据的行索引转换为列索引,实现从长表到宽表的转换。
df = DataFrame({'水果':['苹果','梨','草莓'],
'数量':[3,4,5],
'价格':[4,5,6]})
print(df)
示例原始数据包含三列:价格、数量和水果名称。具体数据如下: 0 价格4 数量3 水果苹果 1 价格5 数量4 水果梨 2 价格6 数量5 水果草莓
stack与unstack函数详解
1. 使用stack()函数
stack_df = df.stack()
print(stack_df)
执行stack()后的结果展示,原列名变为多级索引的第一层,原数据值成为Series的值: 0 价格 4 数量 3 水果 苹果 1 价格 5 数量 4 水果 梨 2 价格 6 数量 5 水果 草莓
输出数据类型为:dtype: object
2. 使用unstack()函数
print(stack_df.unstack())
对stack后的结果执行unstack(),数据恢复为原始DataFrame结构: 价格 数量 水果 0 4 3 苹果 1 5 4 梨 2 6 5 草莓
3. 通过level参数指定旋转轴的层次(默认level=-1)
print(stack_df.unstack(level=0))
当指定level=0时,unstack()将第一层索引(原列名)转为列,结果如下: 0 1 2 价格 4 5 6 数量 3 4 5 水果 苹果 梨 草莓
pivot轴向旋转操作
二、轴向旋转(pivot)
pivot(index, columns, values)函数:用于将长表转换为宽表。其中index指定新的行索引,columns指定新的列索引,values指定填充DataFrame的值。
df = DataFrame({'水果种类':['苹果','苹果','梨','梨','草莓','草莓'],
'信息':['价格','数量','价格','数量','价格','数量'],
'值':[4,3,5,4,6,5]})
print(df)
示例数据包含水果种类、信息类型(价格/数量)及对应数值: 信息 值 水果种类 0 价格 4 苹果 1 数量 3 苹果 2 价格 5 梨 3 数量 4 梨 4 价格 6 草莓 5 数量 5 草莓
将水果种类作为行索引,将信息作为列索引,进行透视操作。
print(df.pivot('水果种类','信息','值'))
透视后的结果,以水果种类为行,信息类型为列,值为内容: 信息 价格 数量 水果种类 梨 5 4 苹果 4 3 草莓 6 5
pivot的等价实现方式
pivot函数的功能可以通过set_index和unstack组合等价实现。
print(df.set_index(['水果种类','信息']).unstack())
使用set_index(['水果种类','信息']).unstack()得到的结果与pivot一致: 值 信息 价格 数量 水果种类 梨 5 4 苹果 4 3 草莓 6 5
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













