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 21 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
python实现redis三种cas事务操作
Dec 19 Python
pytorch cnn 识别手写的字实现自建图片数据
May 20 Python
对python中词典的values值的修改或新增KEY详解
Jan 20 Python
Python测试Kafka集群(pykafka)实例
Dec 23 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
Jan 04 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
Python3中的f-Strings增强版字符串格式化方法
Mar 04 Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 Python
Expected conditions模块使用方法汇总代码解析
Aug 13 Python
Python深度学习之Pytorch初步使用
May 20 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获取表单所有复选框的值的方法
2014/08/28 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
阻止子元素继承父元素事件具体思路及实现
2013/05/02 Javascript
原生js实现日期联动
2015/01/12 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
js 数组当前行添加数据方法详解
2020/07/28 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
python矩阵的转置和逆转实例
2018/12/12 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
Python Django 命名空间模式的实现
2019/08/09 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
python中关于数据类型的学习笔记
2020/07/19 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
银行会计财务工作个人的自我评价
2013/10/29 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
置业顾问岗位职责
2014/03/02 职场文书
职务任命书范本
2014/06/05 职场文书
党章培训心得体会
2014/09/04 职场文书
运动会闭幕式主持词
2015/07/01 职场文书
小学信息技术教学反思
2016/02/16 职场文书
2021-4-3课程——SQL Server查询【2】
2021/04/05 SQL Server
浅谈Vue的computed计算属性
2022/03/21 Vue.js