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实现的监测服务器硬盘使用率脚本分享
Nov 07 Python
详解python脚本自动生成需要文件实例代码
Feb 04 Python
python脚本替换指定行实现步骤
Jul 11 Python
Tensorflow卷积神经网络实例进阶
May 24 Python
Python开发最牛逼的IDE——pycharm
Aug 01 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
Oct 26 Python
django框架实现模板中获取request 的各种信息示例
Jul 01 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 Python
修改Pandas的行或列的名字(重命名)
Dec 18 Python
python是怎么被发明的
Jun 15 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
Feb 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
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
2018/07/09 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
Vue-axios-post数据后端接不到问题解决
2020/01/09 Javascript
微信小程序轮播图swiper代码详解
2020/12/01 Javascript
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
Python爬豆瓣电影实例
2018/02/23 Python
Python基于dom操作xml数据的方法示例
2018/05/12 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
python matplotlib实现双Y轴的实例
2019/02/12 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
一个基于canvas的移动端图片编辑器的实现
2020/10/28 HTML / CSS
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
Shell如何接收变量输入
2012/09/24 面试题
临床医师专业个人自我评价范文
2013/11/07 职场文书
应届毕业生求职自荐书
2014/01/03 职场文书
城建学院毕业生自荐信
2014/01/31 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
2014年副班长工作总结
2014/12/10 职场文书
教师反邪教心得体会
2016/01/15 职场文书
解决Maven项目中 Invalid bound statement 无效的绑定问题
2021/06/15 Java/Android
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android