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中让MySQL查询结果返回字典类型的方法
Aug 22 Python
python3生成随机数实例
Oct 20 Python
python创建列表并给列表赋初始值的方法
Jul 28 Python
关于Python中Inf与Nan的判断问题详解
Feb 08 Python
Python实现的txt文件去重功能示例
Jul 07 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
Python中使用logging和traceback模块记录日志和跟踪异常
Apr 09 Python
Python简单处理坐标排序问题示例
Jul 11 Python
Django实现发送邮件找回密码功能
Aug 12 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 Python
解决Python 写文件报错TypeError的问题
Oct 23 Python
python实现高效的遗传算法
Apr 07 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/10/09 PHP
Php注入点构造代码
2008/06/14 PHP
php 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
PHP学习之整理字符串
2011/04/17 PHP
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
js 操作css实现代码
2009/06/11 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
解决layui下拉框监听问题(监听不到值的变化)
2019/09/28 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
CSS3 边框效果
2019/11/04 HTML / CSS
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
幼师专业求职推荐信
2013/11/08 职场文书
年度考核评语
2014/01/19 职场文书
创新型城市实施方案
2014/03/06 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
骨干教师申报材料
2014/12/17 职场文书
业务员年终工作总结2015
2015/05/28 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
Python基础之常用库常用方法整理
2021/04/30 Python
详解Python自动化之文件自动化处理
2021/06/21 Python
Python利用FlashText算法实现替换字符串
2022/03/31 Python
CSS中calc(100%-100px)不加空格不生效
2023/05/07 HTML / CSS