python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
作者:侯小啾 发布时间:2023-12-13 17:38:55
标签:stack(),unstack(),pivot()
1.stack()
stack()用于将列索引转换为最内层的行索引,这样叙述比较抽象,看示例就容易理解啦:
准备一组数据,给其设置双索引。
import pandas as pd
data = [['A类', 'a1', 123, 224, 254], ['A类', 'a2', 234, 135, 444], ['A类', 'a3', 345, 241, 324],
['B类', 'b1', 112, 412, 466], ['B类', 'b2', 224, 235, 345], ['B类', 'b3', 369, 214, 352],
['C类', 'c1', 236, 251, 485], ['C类', 'c2', 378, 216, 515], ['C类', 'c3', 135, 421, 312],
['D类', 'd1', 306, 325, 496], ['D类', 'd2', 147, 235, 524], ['D类', 'd3', 520, 222, 267]]
df = pd.DataFrame(data=data, columns=['类别', '编号', 'A指标', 'B指标', 'C指标'])
df = df.set_index(['类别', '编号'])
print(df)
df = df.stack()
print(df)
如图,成功将索引列之外的 A指标,B指标,C指标三列放在了同一列。
此时的df,不再是一个DataFrame,而变为了一个Series对象。:
print(type(df))
该Series的index列不同于原DataFrame的index列,而是在原DataFrame的index列的基础上,又增加了从右边合并过来的部分:
print(df.index)
此时Values为:
print(df.values)
2. unstack()
unstack是stack的逆向操作。
在上述示例的代码的基础上,对上边的df继续调用unstack()方法:
df1 = df.unstack()
print(df1)
可以看到unstack变回了原来的样子。
3. pivot()
这里对于上边例子中的数据稍作调整:
不设置多重索引
import pandas as pd
data = [['A类', '1', 123, 224, 254], ['A类', '2', 234, 135, 444], ['A类', '3', 345, 241, 324],
['B类', '1', 112, 412, 466], ['B类', '2', 224, 235, 345], ['B类', '3', 369, 214, 352],
['C类', '1', 236, 251, 485], ['C类', '2', 378, 216, 515], ['C类', '3', 135, 421, 312],
['D类', '1', 306, 325, 496], ['D类', '2', 147, 235, 524], ['D类', '3', 520, 222, 267]]
df = pd.DataFrame(data=data, columns=['类别', '编号', 'A指标', 'B指标', 'C指标'])
print(df)
df2 = df.pivot(index='编号', columns='类别', values='A指标')
print(df2)
index和columns分别指设定那一列的值为index,设置那一列的值为columns。values指表格要体现的指标。
df3 = df.pivot(index='类别', columns='编号', values='A指标')
print(df3)
来源:https://blog.csdn.net/weixin_48964486/article/details/123371907


猜你喜欢
- 1.虚拟机数据库设置--重启数据库(1)vi /etc/my.cnfbind = 0.0.0.0(2).远程不能用root用户连,得新建用户
- 在上一篇文章中,我们介绍了如何使用源码对TensorBoard进行编译教程,没有定制需求的可以直接使用pip进行安装。TensorBoard
- 本文实例讲述了Python实现将Excel转换成xml的方法。分享给大家供大家参考,具体如下:最近写了个小工具 用于excel转成xml直接
- 一、常见模型分类1.1、循环服务器模型循环接收客户端请求,处理请求。同一时刻只能处理一个请求,处理完毕后再处理下一个。优点:实现简单,占用资
- 本文实例为大家分享了python给心爱的人每天发天气预报的具体代码,供大家参考,具体内容如下下面的代码实现了用了之前获取天气的代码,然后用i
- python作为一门动态语言,在使用变量之前是不需要进行定义,而是通过动态绑定的方法将变量绑定为某种类型。这样做为我们使用变量时提供了方便,
- DB存储层次结构(画了个草图,将就看一下...XD)管理表空间 &nb
- 程序调用远端服务,为了确保可用性最好在使用前进行健康检测,将异常的服务排除。#!/usr/bin/perl#use strict;use I
- 一、变量的定义程序中,数据都是临时存储在内存中,为了更快速的查找或使用这个数据,通常我们把这个数据在内存中存储之后,给整个数据定义一个名称,
- 本文总结了asp初学者在学习asp过程中可能会碰到的常见问题,并做了详细的解答。1.如何用Asp判断你的网站的虚拟物理路径 答:使用Mapp
- 比如CUTEEDITOR,虽 然功能比FCKEDITOR还要强大,可是,它本身也够庞大了,至于FREETEXTBOX等,其易用性与FCKED
- 后端:from rest_framework.views import APIViewfrom car import settingsfro
- import numpy as npimport sysdef conv_(img, conv_filter): filter_
- 问题背景在项目开发过程中,我遇到一个需求:对于某条记录,一个用户对它进行操作时会持续比较久,希望在一个用户的操作期间,不允许有另一个用户操作
- 认证登录django.contrib.auth中提供了许多方法,这里主要介绍其中的三个:1 authenticate(**cre
- 我就废话不多说了,大家还是直接看代码吧~b = torch.zeros((3, 2, 6, 6))a = torch.zeros((3, 2
- 前端使用ajax进行数据交互时:$.ajax({ cache: false, type: "POST", url: {%
- 一、需求来源工作中需要一种树形菜单组件,经过两天的构思最终通过作用域插槽实现: 此组件将每个节点(插槽名为 node)暴露出来。通过插槽的
- 最近刚接触了公司的服务器,使用的是Windows 2003 server + IIS 6.0 服务器,在使用无组件上传文件时产生这个错误时:
- 有用的 Python 单行代码片段,只需一行代码即可解决特定编码问题!在本文中,云朵君将分享20 个 Python 一行代码,你可以在 30