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 相关文章推荐
简单介绍利用TK在Python下进行GUI编程的教程
Apr 13 Python
使用SAE部署Python运行环境的教程
May 05 Python
python实现转圈打印矩阵
Mar 02 Python
Python中Numpy mat的使用详解
May 24 Python
python打开windows应用程序的实例
Jun 28 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
利用python实现周期财务统计可视化
Aug 25 Python
python对象销毁实例(垃圾回收)
Jan 16 Python
Python如何访问字符串中的值
Feb 09 Python
Python 实现敏感目录扫描的示例代码
May 21 Python
Python爬虫自动化爬取b站实时弹幕实例方法
Jan 26 Python
Python装饰器详细介绍
Mar 25 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
让你的网站首页自动选择语言转跳
2006/12/06 PHP
可以在线执行PHP代码包装修正版
2008/03/15 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
基于PHP实现通过照片获取ip地址
2016/04/26 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
2012/12/12 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
CSS3解决移动页面上点击链接触发色块的问题
2016/06/03 HTML / CSS
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
软件测试企业面试试卷
2016/07/13 面试题
体育专业学生自我评价范文
2014/01/17 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
企业道德讲堂实施方案
2014/03/19 职场文书
小学六年级学生评语
2014/04/22 职场文书
自我推荐信范文
2014/05/09 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
地道战观后感300字
2015/06/04 职场文书
签约仪式致辞
2015/07/30 职场文书