Pandas之MultiIndex对象的示例详解


Posted in Python onJune 25, 2019

约定

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

创建方式三:笛卡尔积

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')

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

Python 相关文章推荐
Python字符串格式化
Jun 15 Python
在Python的Django框架中更新数据库数据的方法
Jul 17 Python
Python实现随机生成手机号及正则验证手机号的方法
Apr 25 Python
python实现随机漫步算法
Aug 27 Python
python 实现图片旋转 上下左右 180度旋转的示例
Jan 24 Python
几行Python代码爬取3000+上市公司的信息
Jan 24 Python
在Python中使用Neo4j的方法
Mar 14 Python
分析运行中的 Python 进程详细解析
Jun 22 Python
使用python 写一个静态服务(实战)
Jun 28 Python
Python实现遗传算法(二进制编码)求函数最优值方式
Feb 11 Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 Python
python wsgiref源码解析
Feb 06 Python
Python+threading模块对单个接口进行并发测试
Jun 25 #Python
python简单鼠标自动点击某区域的实例
Jun 25 #Python
详解pandas删除缺失数据(pd.dropna()方法)
Jun 25 #Python
python命令行参数用法实例分析
Jun 25 #Python
PyQt5重写QComboBox的鼠标点击事件方法
Jun 25 #Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 #Python
PyQt5下拉式复选框QComboCheckBox的实例
Jun 25 #Python
You might like
虫族 Zerg 历史背景
2020/03/14 星际争霸
PHP5函数小全(分享)
2013/06/06 PHP
php常用Output和ptions/Info函数集介绍
2013/06/19 PHP
php代码书写习惯优化小结
2013/06/20 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
2014/04/09 PHP
Jquery 基础学习笔记
2009/05/29 Javascript
编写高效jQuery代码的4个原则和5个技巧
2014/04/24 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
2017/10/17 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
python赋值操作方法分享
2013/03/23 Python
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
Python基于PycURL实现POST的方法
2015/07/25 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
Python列表(List)知识点总结
2019/02/18 Python
python selenium实现发送带附件的邮件代码实例
2019/12/10 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
西雅图的买手店:Totokaelo
2019/10/19 全球购物
工程部主管岗位职责
2013/11/17 职场文书
经典大学生求职信范文
2014/01/06 职场文书
学习十八大报告感言
2014/02/28 职场文书
环保标语大全
2014/06/12 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
计划生育责任书
2015/05/09 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书
js Proxy的原理详解
2021/05/25 Javascript
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android