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多线程编程(五):死锁的形成
Apr 05 Python
Python中处理字符串之endswith()方法的使用简介
May 18 Python
Python基于Tkinter实现的记事本实例
Jun 17 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
Jun 23 Python
Python中列表与元组的乘法操作示例
Feb 10 Python
在python中bool函数的取值方法
Nov 01 Python
Python实现E-Mail收集插件实例教程
Feb 06 Python
Python使用指定端口进行http请求的例子
Jul 25 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
Apr 16 Python
用python实现学生管理系统
Jul 24 Python
Python wordcloud库安装方法总结
Dec 31 Python
pycharm最新激活码有效期至2100年(亲测可用)
Feb 05 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
ajax php 实现写入数据库
2009/09/02 PHP
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
php输入数据统一类实例
2015/02/23 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
ThinkPHP5&5.1框架关联模型分页操作示例
2019/08/03 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
Python 函数基础知识汇总
2018/03/09 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
妇产科护士自我鉴定
2013/10/15 职场文书
秋天的怀念教学反思
2014/04/28 职场文书
毕业生求职信
2014/06/10 职场文书
英语感谢信范文
2015/01/20 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
运动会800米赞词
2015/07/22 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书
深入浅析Redis 集群伸缩原理
2021/05/15 Redis