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使用MD5加密字符串示例
Aug 22 Python
python logging 日志轮转文件不删除问题的解决方法
Aug 02 Python
使用Kivy将python程序打包为apk文件
Jul 29 Python
Python使用smtp和pop简单收发邮件完整实例
Jan 09 Python
python复制列表时[:]和[::]之间有什么区别
Oct 16 Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 Python
关于Pytorch MaxUnpool2d中size操作方式
Jan 03 Python
python继承threading.Thread实现有返回值的子类实例
May 02 Python
django 装饰器 检测登录状态操作
Jul 02 Python
python内置进制转换函数的操作
Jun 02 Python
使用pandas生成/读取csv文件的方法实例
Jul 09 Python
Python常用配置文件ini、json、yaml读写总结
Jul 09 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中session过期时间设置及session回收机制介绍
2014/05/05 PHP
php实现的zip文件内容比较类
2014/09/24 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
php基于数组函数实现关联表的编辑操作示例
2017/07/04 PHP
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
vue实现简单图片上传
2020/06/30 Javascript
Python常用随机数与随机字符串方法实例
2015/04/09 Python
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
总结Python编程中三条常用的技巧
2015/05/11 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
Python中关于使用模块的基础知识
2015/05/24 Python
Python判断文本中消息重复次数的方法
2016/04/27 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
Django日志模块logging的配置详解
2017/02/14 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
Django--权限Permissions的例子
2019/08/28 Python
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
有影响力的品牌之家:Our Social Collective
2019/06/08 全球购物
计算机本科生自荐信
2013/10/15 职场文书
期末总结的个人自我评价
2013/11/02 职场文书
会计电算化个人求职信范文
2014/01/24 职场文书
三爱活动实施方案
2014/03/19 职场文书
《夹竹桃》教学反思
2014/04/20 职场文书
节能环保演讲稿
2014/08/28 职场文书
个人委托书怎么写
2014/09/17 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
优秀教师事迹材料
2014/12/15 职场文书
婚育证明格式
2015/06/17 职场文书
老干部座谈会主持词
2015/07/03 职场文书
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS