Pandas详解四之MultiIndex对象
约定
import pandas as pd
from pandas import DataFrame
import numpy as np
MultiIndex
MultiIndex表示多级索引,它是从Index继承过来的,其中多级标签用元组对象来表示。
一、创建MultiIndex对象
- 创建方式一:元组列表
m_index1=pd.Index([("A","x1"),("A","x2"),("B","y1"),("B","y2"),("B","y3")],name=["class1","class2"])
m_index1
代码结果:
MultiIndex(levels=[['A', 'B'], ['x1', 'x2', 'y1', 'y2', 'y3']],labels=[[0, 0, 1, 1, 1], [0, 1, 2, 3, 4]],names=['class1', 'class2'])
df1=DataFrame(np.random.randint(1,10,(5,3)),index=m_index1)
df1
代码结果:
0 | 1 | 2 | ||
---|---|---|---|---|
class1 | class2 | |||
A | x1 | 7 | 4 | 8 |
x2 | 4 | 5 | 2 | |
B | y1 | 6 | 9 | 7 |
y2 | 2 | 1 | 6 | |
y3 | 6 | 8 | 6 |
- 创建方式二:特定结构
例如**from_arrays()
class1=["A","A","B","B"]
class2=["x1","x2","y1","y2"]
m_index2=pd.MultiIndex.from_arrays([class1,class2],names=["class1","class2"])
m_index2
代码结果:
MultiIndex(levels=[['A', 'B'], ['x1', 'x2', 'y1', 'y2']],labels=[[0, 0, 1, 1], [0, 1, 2, 3]],names=['class1', 'class2'])
df2=DataFrame(np.random.randint(1,10,(4,3)),index=m_index2)
df2
代码结果:
0 | 1 | 2 | ||
---|---|---|---|---|
class1 | class2 | |||
A | x1 | 2 | 4 | 5 |
x2 | 3 | 5 | 9 | |
B | y1 | 7 | 1 | 2 |
y2 | 3 | 1 | 8 |
- c创建方式三:笛卡尔积
from_product()从多个集合的笛卡尔积创建MultiIndex对象。
m_index3=pd.MultiIndex.from_product([["A","B"],['x1','y1']],names=["class1","class2"])
m_index3
代码结果:
MultiIndex(levels=[['A', 'B'], ['x1', 'y1']],labels=[[0, 0, 1, 1], [0, 1, 0, 1]],names=['class1', 'class2'])
df3=DataFrame(np.random.randint(1,10,(2,4)),columns=m_index3)
df3
代码结果:
class1 | A | B | ||
---|---|---|---|---|
class2 | x1 | y1 | x1 | y1 |
0 | 2 | 9 | 1 | 8 |
1 | 5 | 2 | 5 | 2 |
二、MultiIndex对象属性
df1
代码结果:
0 | 1 | 2 | ||
---|---|---|---|---|
class1 | class2 | |||
A | x1 | 7 | 4 | 8 |
x2 | 4 | 5 | 2 | |
B | y1 | 6 | 9 | 7 |
y2 | 2 | 1 | 6 | |
y3 | 6 | 8 | 6 |
m_index4=df1.index
print(in1[0])
代码结果:
('A', 'x1')
- 调用.get_loc()和.get_indexer()获取标签的下标:
print(m_index4.get_loc(("A","x2")))
print(m_index4.get_indexer([("A","x2"),("B","y1"),"nothing"]))
代码结果:
1
[ 1 2 -1]
- MultiIndex对象使用多个Index对象保存索引中每一级的标签:
print(m_index4.levels[0])
print(m_index4.levels[1])
代码结果:
Index(['A', 'B'], dtype='object', name='class1')
Index(['x1', 'x2', 'y1', 'y2', 'y3'], dtype='object', name='class2')
- MultiIndex对象还有属性labels保存标签的下标:
print(m_index4.labels[0])
print(m_index4.labels[1])
代码结果:
FrozenNDArray([0, 0, 1, 1, 1], dtype='int8')
FrozenNDArray([0, 1, 2, 3, 4], dtype='int8')
谢谢大家的浏览,
希望我的努力能帮助到您,
共勉!
Pandas详解四之MultiIndex对象相关推荐
- Pandas详解三之Index对象
约定 import pandas as pd from pandas import DataFrame import numpy as np Index Index对象保存着索引标签数据,它可以快速找 ...
- Python全栈开发-数据分析-03 Pandas详解 (中)
Pandas详解 (中) 一. 处理缺失值 1.1 drop函数:删除行,删除列 1.删除某列或某行数据可以用到pandas提供的方法drop 2.drop方法的用法: drop(labels, ax ...
- Python全栈开发-数据分析-03 Pandas详解 (下)
Pandas详解 (下) 一. Excel文件的拆分与合并 1.1 一个文件夹下多个工作簿的合并[单独Sheet] 思路: 1,把文件夹下面所有的文件都遍历出来 2.循环读取每个文件 (1)第一次读取 ...
- Python全栈开发-数据分析-02 Pandas详解 (上)
Pandas详解 (上) 一. 安装pandas 1.按Win+R,输入CMD确定, 输入 pip install pandas 回车 还要安装xlrd,否则你打不开Excel文件 pip insta ...
- linux 进程间通信 dbus-glib【实例】详解四(上) C库 dbus-glib 使用(附代码)(编写接口描述文件.xml,dbus-binding-tool工具生成绑定文件)(列集散集函数)
linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...
- mybatis 鉴别其_MyBatis之Mapper XML 文件详解(四)-JDBC 类型和嵌套查询
MyBatis之Mapper XML 文件详解(四)-JDBC 类型和嵌套查询 白玉 IT哈哈 支持的 JDBC 类型 为了未来的参考,MyBatis 通过包含的 jdbcType 枚举型,支持下面的 ...
- php 赋值给 dom对象,详解PHP原生DOM对象操作XML的方法
详解PHP原生DOM对象操作XML的方法 发布于 2017-08-08 20:15:29 | 80 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...
- App Widgets 详解四 RemoteViews、RemoteViewsService和RemoteViewsFactory
导读 本篇文章将介绍"集合视图",App Widget 复杂布局的实现 App Widget 小部件系列其他文章链接 App Widgets 详解一 简单使用 App Widget ...
- Android Studio 插件开发详解四:填坑
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78265540 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...
最新文章
- java 注解报错_java注解验证接收参数 返回注解字段的错误
- shell脚本如何实现多彩进度条
- C++对象模型1——类对象的sizeof、static成员、对象模型、this指针
- php session redis 配置
- 【Python】深入理解Python函数的9个黄金法则
- 8.非关系型数据库(Nosql)之mongodb的应用场景(关系型数据库 和 Mongodb进行CRUD时数据用时的比较)
- 手动调用cx-table.focus和a.focus方法的效果比较
- JVM 调优系列之图解垃圾回收
- docker java mysql_Docker 搭建 MySQL 服务
- SkyEye卫星篇:从无到有的国之“芯”
- buffernbife会不会对性能有影响
- log4j:warn找不到_修复log4j WARN找不到记录器的附加程序,请正确初始化log4j系统
- Compile warning: Embedded binary's NSExtensionActivationRule is TRUEPREDICATE
- java EXCEL或WORD转PDF转图片(base64)
- java的第十一章总结(枚举,泛型)
- 惯性导航技术, IMU, AHRS
- 彻底理解connection timeout
- 使用Crucible和FishEye链接svn库时遇到尝试添加或索引存储库时出现错误-版本中不存在的问题
- springboot 内存参数 启动
- 【Hive】Hive数据倾斜以及解决方案
热门文章
- python是一种跨平台开源免费的高级动态编程语言_Python是一种跨平台、开源、免费的高级动态编程语言。...
- python保存dat文件_用Python解析.DAT文件
- java applet repaint,java – 为什么调用“repaint()”而不是直接在Applet中调用“paint(..)”?...
- 【JZOJ】4210 我才不是萝莉控呢!
- 关于深度论坛进不去的原因
- 游客不满旅游团更改路线要求退钱遭推搡骨折
- 非零基础自学Golang 第1章 走进Go 1.2 Go语言官方文档 1.3 学好Go 的建议
- GIF 89a图像格式解析
- URL地址中的#符号
- 一步步教你设置Word2003首字下沉