Pandas 创建层次化索引

1.创建多层次索引

1.1 隐式构造

  • 最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数组

# 导入pandasimport numpy as npimport pandas as pddata = np.random.randint(0,100,size=(6,6))# 行索引index = [    ["1班","1班","1班","2班","2班","2班"],    ["张三","李四","王五","鲁班","张三丰","张无忌"]]# 列索引columns = [    ["期中","期中","期中","期末","期末","期末"],    ["语文","数学","英语","语文","数学","英语"]]df = pd.DataFrame(data=data,index=index,columns=columns)df

期中期末
语文数学英语语文数学英语
1班张三405130165745
李四74457048751
王五574535252276
2班鲁班938069311729
张三丰903836775630
张无忌355079453876
  • Series也可以创建多层索引

data = np.random.randint(0,100,size=6)index = [    ["1班","1班","1班","2班","2班","2班"],    ["张三","李四","王五","鲁班","张三丰","张无忌"]]s = pd.Series(data=data,index=index)s
1班  张三      7李四      9王五     57
2班  鲁班     88张三丰    36张无忌     5
dtype: int32

1.2 显式构造pd.MultiIndex

  • 使用数组

data = np.random.randint(0,100,size=(6,6))# 行索引index = pd.MultiIndex.from_arrays([    ["1班","1班","1班","2班","2班","2班"],    ["张三","李四","王五","鲁班","张三丰","张无忌"]])# 列索引columns = [    ["期中","期中","期中","期末","期末","期末"],    ["语文","数学","英语","语文","数学","英语"]]df = pd.DataFrame(data=data,index=index,columns=columns)df

期中期末
语文数学英语语文数学英语
1班张三56070165465
李四119994668251
王五37167148272
2班鲁班393365697768
张三丰53152399797
张无忌53301895736

  • 使用tuple

data = np.random.randint(0,100,size=(6,6))# 行索引index = pd.MultiIndex.from_tuples(    (        ("1班","张三"),("1班","李四"),("1班","王五"),        ("2班","鲁班"),("2班","张三丰"),("2班","张无忌")    ))# 列索引columns = [    ["期中","期中","期中","期末","期末","期末"],    ["语文","数学","英语","语文","数学","英语"]]df = pd.DataFrame(data=data,index=index,columns=columns)df

期中期末
语文数学英语语文数学英语
1班张三278920751
李四756058795015
王五374756435955
2班鲁班412543714637
张三丰665352215391
张无忌292622495624

  • 使用product

笛卡尔积:{a,b}{c,d} ==> {a,c},{a,d},{b,c},{b,d}

data = np.random.randint(0,100,size=(6,6))# 行索引index = pd.MultiIndex.from_product([    ["1班","2班"],    ["张三","李四","王五"]])# 列索引columns = [    ["期中","期中","期中","期末","期末","期末"],    ["语文","数学","英语","语文","数学","英语"]]df = pd.DataFrame(data=data,index=index,columns=columns)df

期中期末
语文数学英语语文数学英语
1班张三75548352756
李四52631106384
王五6765964516
2班张三771010944173
李四863451501887
王五97391433845

2.多层列索引

除了行索引index,列索引columns也能用同样的方法创建多层索引

  • 使用数组

data = np.random.randint(0,100,size=(6,6))# 行索引index = pd.MultiIndex.from_arrays([    ["1班","1班","1班","2班","2班","2班"],    ["张三","李四","王五","鲁班","张三丰","张无忌"]])# 列索引columns = pd.MultiIndex.from_arrays([    ["期中","期中","期中","期末","期末","期末"],    ["语文","数学","英语","语文","数学","英语"]])df = pd.DataFrame(data=data,index=index,columns=columns)df

期中期末
语文数学英语语文数学英语
1班张三205872666271
李四672263461621
王五34921517430
2班鲁班18972455086
张三丰582417324952
张无忌503326384182

  • 使用tuple

data = np.random.randint(0,100,size=(6,6))# 行索引index = pd.MultiIndex.from_tuples(    (        ("1班","张三"),("1班","李四"),("1班","王五"),        ("2班","鲁班"),("2班","张三丰"),("2班","张无忌")    ))# 列索引columns = pd.MultiIndex.from_tuples(    (        ("期中","语文"),("期中","数学"),("期中","英语"),        ("期末","语文"),("期末","数学"),("期末","英语")    ))df = pd.DataFrame(data=data,index=index,columns=columns)df

期中期末
语文数学英语语文数学英语
1班张三5537667064
李四38327979782
王五804956513219
2班鲁班366881133573
张三丰945694451534
张无忌78593572465

  • 使用product

data = np.random.randint(0,100,size=(6,6))# 行索引index = pd.MultiIndex.from_product([    ["1班","2班"],    ["张三","李四","王五"]])# 列索引columns = pd.MultiIndex.from_product([    ["期中","期末"],    ["语文","数学","英语"]])df = pd.DataFrame(data=data,index=index,columns=columns)df

期中期末
语文数学英语语文数学英语
1班张三1181749472
李四413322753677
王五428228218457
2班张三1864904180
李四249966923425
王五28411628536

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/15076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【全网最全】2024电工杯数学建模B题53页成品论文+完整matlab代码+完整python代码+数据预处理+可视化结果等(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片链接,那是获取资料的入口! 【全网最全】2024电工杯数学建模B题53页成品论文完整matlab、py代码19建模过程代码数据等(后续会更新)「首先来看看目前已有的资…

微软新功能Recall引发隐私担忧,英国数据监管机构展开调查

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

[Spring Cloud] (9)XSS拦截器

文章目录 简述本文涉及代码已开源Fir Cloud 完整项目防XSS攻击必要性:作用: 整体效果后端增加拦截器开关配置pom中增加jsoup依赖添加JSON处理工具类添加xss拦截工具类防XSS-请求拦截器 前端 简述 本文涉及代码已开源 本文网关gateway,微服务…

Visual Studio Code插件

文章目录 工具类AIChinese (Simplified) (简体中文)cmake集Code RunnerGitLens — Git superchargedPath IntellisenseTodo TreeBookmarks (书签)markdownclangd 美化类Output Colorizer (输出窗口彩色)Doxygen Documentation Gen…

安装harbor出现问题: Running 1/1 ✘ Network harbor_harbor Error

安装harbor出现问题: [] Running 1/1 ✘ Network harbor_harbor Error 0.2s failed to create network harbor_harbor: Error response from daemon: Fa…

K8s 搭建 FileBeat+ELK 分布式日志收集系统 以及 KQL 语法介绍

一、K8s FileBeat ELK 介绍 ELK,即Elasticsearch、Logstash和Kibana三个开源软件的组合,是由Elastic公司提供的一套完整的日志管理解决方案。Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,它允许你快速地、近乎实时地存储、搜索…

力扣654. 最大二叉树

Problem: 654. 最大二叉树 文章目录 题目描述思路复杂度Code 题目描述 思路 对于构造二叉树这类问题一般都是利用先、中、后序遍历,再将原始问题分解得出结果 1.定义递归函数build,每次将一个数组中的最大值作为当前子树的根节点构造二叉树;…

牛客NC391 快乐数【simple 模拟法 Java/Go/PHP】

题目 题目链接: https://www.nowcoder.com/practice/293b9ddd48444fa493dd17da0feb192d 思路 直接模拟即可Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值…

Linux-应用编程学习笔记(二、文件I/O、标准I/O)

一、文件I/O基础 文件 I/O 指的是对文件的输入/输出操作,就是对文件的读写操作。Linux 下一切皆文件。 1.1 文件描述符 在 open函数执行成功的情况下, 会返回一个非负整数, 该返回值就是一个文件描述符(file descriptor&#x…

解禁谷歌等浏览器禁止网站使用麦克等媒体设备

1、浏览器地址栏输入chrome://flags/ 微软的chromium内核的edge浏览器,既可以输入:chrome://flags/ ,也可以输入edge://flags/ 2、打开后,界面如下 3、输入搜索,unsafe,并启用、输入需要启用的网址

对AI 感兴趣的小伙伴

如图,欢迎来玩儿! 欢迎来玩儿

Python异常处理:打造你的代码防弹衣!

Hi,我是阿佑,上文咱们讲到——揭秘Python的魔法:装饰器的超能力大揭秘 ‍♂️✨,阿佑将带领大家通过精准捕获异常、使用with语句和上下文管理器、以及异常链等高级技巧来增强代码的健壮性。就像为代码穿上防弹衣,保护它…

生活小区火灾预警新篇章:泵吸式可燃气体报警器的检定与运用

在现代化的生活小区中,燃气设备广泛应用于居民的日常生活之中,但同时也带来了潜在的火灾风险。 可燃气体报警器作为一种安全监测设备,能够及时检测到燃气泄漏等安全隐患,并在达到预设的阈值时发出警报,提醒居民采取相…

SpringBoot Redis 扩展高级功能

环境:SpringBoot2.7.16 Redis6.2.1 1. Redis消息发布订阅 Spring Data 为 Redis 提供了专用的消息传递集成,其功能和命名与 Spring Framework 中的 JMS 集成类似。Redis 消息传递大致可分为两个功能区域: 信息发布 信息订阅 这是一个通常…

北斗短报文终端 | 什么是北斗短报文功能?如何实现北斗短报文通信?

北斗短报文功能是指通过北斗卫星进行短报文通信的功能。这种功能允许用户在没有移动通信信号覆盖的偏远山区、海洋、沙漠等地带,通过北斗短报文终端发送和接收文本信息,进行基本的数据通信。 北斗短报文功能是指北斗卫星导航系统特有的双向报文通信功能。…

urllib_post请求_百度翻译

打开百度翻译,并打开控制台,输入spider,然后在网络中找到对应的接口,可以看出,该url是post请求 在此案例中找到的接口为sug,依据为: 可以看到,传递的数据为kw : XXX, 所…

[Linux]服务管理

一.服务的概念,状态,查看系统服务 服务(service)本质就是进程 如(mysqld,sshd 防火墙等) 是运行在后台的,通常都会监听某个端口,等待其它程序的请求 -------比如mysqld,防火墙等,因此我们又称为…

3D瓦片地图组件上线|提供DEM数据接入,全方位呈现三维地图地形!

在用户调研中,我们了解到很多用户自身的可视化项目,需要在垂直空间上表现一些业务,例如:3D地形效果,数据底板建设等,而传统的地图效果不满足此用户需求。瓦片地图能够无限加载大地图,以更三维的…

【Linux】在Ubuntu 16.04上安装Gerrit + PostgreSQL + Apache服务

Gerrit是一个基于Git版本控制系统的运行于Web浏览器上的Code Review工具,本文叙述如何在Ubuntu 16.04上安装Gerrit服务。(当然安装Gerrit的方法有很多,本文只是其中之一) 文章目录 前提安装PostgreSQL数据库并创建用户下载、配置和…

【飞舞的花瓣】飞舞的花瓣代码||樱花代码||表白代码(完整代码)

关注微信公众号「ClassmateJie」有完整代码以及更多惊喜等待你的发现。 简介/效果展示 这段代码是一个HTML页面,其中包含一个canvas元素和相关的JavaScript代码。这个页面创建了一个飘落花瓣的动画效果。 代码【获取完整代码关注微信公众号「ClassmateJie」回复“…