Pandas数据重塑与轴向旋转:stack、unstack与pivot详解

小石头
小石头
发布时间:2026-10-13| 6人浏览过
原创

本文详细介绍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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。