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写的Socks5协议代理服务器
Aug 06 Python
详细介绍Python函数中的默认参数
Mar 30 Python
利用QT写一个极简单的图形化Python闹钟程序
Apr 07 Python
python在控制台输出进度条的方法
Jun 20 Python
Python 内置函数memoryview(obj)的具体用法
Nov 23 Python
基于python OpenCV实现动态人脸检测
May 25 Python
django的ORM模型的实现原理
Mar 04 Python
Python中Numpy ndarray的使用详解
May 24 Python
用python实现一个简单计算器(完整DEMO)
Oct 14 Python
Pycharm安装第三方库失败解决方案
Nov 17 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 Python
Python基础之常用库常用方法整理
Apr 30 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引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
php微信公众号开发模式详解
2016/11/28 PHP
JS 时间显示效果代码
2009/08/23 Javascript
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
使用jQuery简单实现模拟浏览器搜索功能
2014/12/21 Javascript
javascript数组去重的六种方法汇总
2015/08/16 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
基于JavaScript操作DOM常用的API小结
2015/12/01 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
详解JS模块导入导出
2017/12/20 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
浅谈Python peewee 使用经验
2017/10/20 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
CSS3实现时间轴效果
2016/07/11 HTML / CSS
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
阿迪达斯英国官方网站:adidas英国
2019/08/13 全球购物
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
软件工程专业推荐信
2013/10/28 职场文书
大学生就业推荐信范文
2013/11/29 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
保护环境倡议书100字
2014/05/19 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书