当前位置: 首页 > news >正文

pandas__unstack方法与set_index详解

一、unstack详解

1、用途

unstack()是 pandas 中一个非常重要的数据重塑方法,主要用于将多级索引的层次结构从行索引转换为列索引。最主要的一个用途是将dataframe通过groupby操作得到的grouped进行转换

2、语法说明

DataFrame.unstack(level=-1, fill_value=None) # 其返回值也是一个DataFrame

参数说明

  • level:要取消堆叠的索引级别,可以是整数、字符串或列表,默认为 -1(最后一级)
    • level=0,是第一级索引,最高级索引;
    • level=1,是第二级索引;
    • level=-1,是最后一级索引;
  • fill_value:用于替换缺失值的值

3、实例详解1

# 创建分组数据示例
data = {'city': ['北京', '北京', '上海', '上海', '广州', '广州'],'quarter': ['Q1', 'Q2', 'Q1', 'Q2', 'Q1', 'Q2'],'sales': [100, 150, 200, 180, 120, 160]
}
df = pd.DataFrame(data)
>>> print(df)city quarter  sales
0   北京      Q1    100
1   北京      Q2    150
2   上海      Q1    200
3   上海      Q2    180
4   广州      Q1    120
5   广州      Q2    160

将dataframe stack化,即unstack的相反操作,将一级索引变成多级索引

grouped = df.set_index(['city', 'quarter'])print("分组数据:")
print(grouped)
>>> print(grouped)sales
city quarter
北京   Q1         100Q2         150
上海   Q1         200Q2         180
广州   Q1         120Q2         160

对于上述grouped来说,city是第一级索引,quarter是第二级索引,可以适用unstack将索引转换成列

pivoted = grouped.unstack(level=0)
print("季度unstack后的数据:")
print(pivoted)
>>> pivoted = grouped.unstack(level=0)
>>> print("季度unstack后的数据:")
季度unstack后的数据:
>>> print(pivoted)sales
city       上海   北京   广州
quarter
Q1        200  100  120
Q2        180  150  160
>>>

也可以适用具体的索引名,将其转换成列名

>>> # 将季度unstack到列
>>> pivoted = grouped.unstack(level='quarter')
>>> print("季度unstack后的数据:")
季度unstack后的数据:
>>> print(pivoted)sales
quarter    Q1   Q2
city
上海        200  180
北京        100  150
广州        120  160
>>>

二、多级索引设置

1、实例1

如下所示,可以通过将列名设置乘索引名称,来设置多级索引

# 创建分组数据示例
data = {'city': ['北京', '北京', '上海', '上海', '广州', '广州'],'quarter': ['Q1', 'Q2', 'Q1', 'Q2', 'Q1', 'Q2'],'sales': [100, 150, 200, 180, 120, 160]
}
df = pd.DataFrame(data)
grouped = df.set_index(['city', 'quarter'])print("分组数据:")
print(grouped)# 将季度unstack到列
pivoted = grouped.unstack(level='quarter')
print("季度unstack后的数据:")
print(pivoted)

2、 pd.MultiIndex

如下所示,可以通过 pd.MultiIndex方法设置多级索引。

import pandas as pd
import numpy as np# 创建示例数据
index = pd.MultiIndex.from_tuples([('A', 'x'), ('A', 'y'), ('B', 'x'), ('B', 'y')])
df = pd.DataFrame({'value': [1, 2, 3, 4]}, index=index)
print("原始数据:")
print(df)
http://www.dtcms.com/a/592641.html

相关文章:

  • JS 前端存储实战指南:从基础缓存到离线数据库,构建可靠的数据持久化体系
  • Python应用开发学习:Pygame中实现切换开关及鼠标拖动连续填充功能
  • 2025年--Lc231-350. 两个数组的交集 II-Java版
  • 调试原理[简要描述]
  • NVLink技术
  • 栖霞建设网站响应式网站建设免费
  • 零样本数据集(不需要样本级文本)
  • 虾分发用户体验优化:让内测更懂用户需求
  • Jenkins和Arbess,开源免费CI/CD工具选型指南
  • HTTP/2在EDI领域中的优势:构建高效、安全、现代化的数据交换基石
  • 地图可视化实践录:TopoJSON学习
  • 微算法科技(NASDAQ MLGO)将租赁权益证明(LPoS)共识算法与零知识证明结合,实现租赁代币的隐私保护
  • 徕卡RTC360三维激光扫描仪摔坏故障维修方案
  • 【ZeroRange WebRTC】X.509 证书与 WebRTC 的应用(从原理到实践)
  • 安全服务是什么
  • 免费ppt模板免费网站北京建工集团有限公司官网
  • 营销系统网站源码seo的形式有哪些
  • (二)自然语言处理笔记——Seq2Seq架构、注意力机制
  • 基于微信小程序的场景解决
  • web网页开发,在线考勤管理系统,基于Idea,html,css,vue,java,springboot,mysql
  • 【Kubernetes】K8s 集群 Ingress 入口规则
  • 张云波ArkUI双范式超级实战鸿蒙社区App第一季课程分享
  • 结合Html、Javascript、Jquery做个简易的时间显示器
  • 5种将照片从iPhone传输到戴尔PC/笔记本电脑的方法
  • HarmonyOS开发-媒体文件管理服务
  • 利用AWS Lake Formation标签控制实现多账户数据安全共享与操作简化
  • 企业只有建立了自己的网站公司注册地址可以是家庭地址吗
  • LLMs之Multi-Agent:BettaFish的简介、安装和使用方法、案例应用之详细攻略
  • C# 使用扣子API 实现附带文件上传的AI对话功能
  • YOLOv5(四):models/yolov5s.yaml