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发送伪造的arp请求
Jan 09 Python
Python用模块pytz来转换时区
Aug 19 Python
python对DICOM图像的读取方法详解
Jul 17 Python
Python 使用类写装饰器的小技巧
Sep 30 Python
Python开启线程,在函数中开线程的实例
Feb 22 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
python实现图片插入文字
Nov 26 Python
Python如何通过Flask-Mail发送电子邮件
Jan 29 Python
浅谈pytorch torch.backends.cudnn设置作用
Feb 20 Python
python数据库编程 Mysql实现通讯录
Mar 27 Python
Python pandas对excel的操作实现示例
Jul 21 Python
如何利用Python 进行边缘检测
Oct 14 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
php&java(一)
2006/10/09 PHP
使用 MySQL 开始 PHP 会话
2006/12/21 PHP
PHP 上传文件大小限制
2009/07/05 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
2013/06/24 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
webpack+vue.js快速入门教程
2016/10/12 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
2018/09/01 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
适合前端Vue开发童鞋的跨平台Weex的使用详解
2019/10/16 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
Python实现的下载网页源码功能示例
2017/06/13 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
Pycharm更换python解释器的方法
2018/10/29 Python
python实现石头剪刀布小游戏
2021/01/20 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
全球工业:Global Industrial
2020/02/01 全球购物
正风肃纪剖析材料
2014/02/18 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL