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通过urllib2获取带有中文参数url内容的方法
Mar 13 Python
Java中重定向输出流实现用文件记录程序日志
Jun 12 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
python实现list元素按关键字相加减的方法示例
Jun 09 Python
Python字符串、整数、和浮点型数相互转换实例
Aug 04 Python
详解python中TCP协议中的粘包问题
Mar 22 Python
python3.x实现base64加密和解密
Mar 28 Python
使用 Python 写一个简易的抽奖程序
Dec 08 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
Apr 30 Python
Python基于numpy模块实现回归预测
May 14 Python
keras自动编码器实现系列之卷积自动编码器操作
Jul 03 Python
python元组拆包实现方法
Feb 28 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,ajax实现分页
2008/03/27 PHP
linux下 C语言对 php 扩展
2008/12/14 PHP
php遍历文件夹和文件列表示例分享
2014/03/11 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
JS实现self的resend
2010/07/22 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
JS的get和set使用示例
2014/02/20 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
2017/01/20 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
Vuex的API文档说明详解
2020/02/05 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
Python中获取对象信息的方法
2015/04/27 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
Linux下多个Python版本安装教程
2018/08/15 Python
python绘制简单彩虹图
2018/11/19 Python
NumPy 基本切片和索引的具体使用方法
2019/04/24 Python
django框架模板语言使用方法详解
2019/07/18 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
浅谈PyTorch中in-place operation的含义
2020/06/27 Python
python3跳出一个循环的实例操作
2020/08/18 Python
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
给医务人员表扬信
2014/01/12 职场文书
ktv好的活动方案
2014/08/15 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL