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基础教程之类class定义使用方法
Feb 20 Python
Python跳出循环语句continue与break的区别
Aug 25 Python
使用Django的模版来配合字符串翻译工作
Jul 27 Python
Python基于二分查找实现求整数平方根的方法
May 12 Python
python fabric实现远程部署
Jan 05 Python
Python使用OpenCV进行标定
May 08 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
Jul 11 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
python 列表、字典和集合的添加和删除操作
Dec 16 Python
python第三方库学习笔记
Feb 07 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
Jun 29 Python
浅谈pytorch中stack和cat的及to_tensor的坑
May 20 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生成RSS订阅的方法
2015/02/13 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
react-router 路由切换动画的实现示例
2018/12/03 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
python修改字典内key对应值的方法
2015/07/11 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
Flask Web开发入门之文件上传(八)
2018/08/17 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
python中的decimal类型转换实例详解
2019/06/26 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
python 实现任务管理清单案例
2020/04/25 Python
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
销售人员自我评价怎么写
2013/09/19 职场文书
建筑学推荐信
2013/11/03 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
优秀班集体申报材料
2014/12/25 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
python关于集合的知识案例详解
2021/05/30 Python
Golang流模式之grpc的四种数据流
2022/04/13 Golang
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers