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中去空格函数的用法
Aug 21 Python
Python守护进程和脚本单例运行详解
Jan 06 Python
python基于itchat实现微信群消息同步机器人
Feb 27 Python
python读取文本绘制动态速度曲线
Jun 21 Python
详解Python下ftp上传文件linux服务器
Jun 21 Python
Opencv实现抠图背景图替换功能
May 21 Python
Python自动化运维之Ansible定义主机与组规则操作详解
Jun 13 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
python如何实现复制目录到指定目录
Feb 13 Python
Keras搭建自编码器操作
Jul 03 Python
python字符串拼接+和join的区别详解
Dec 03 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使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
webpack实现热更新(实施同步刷新)
2017/07/28 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
Python logging模块学习笔记
2014/05/24 Python
Python创建文件和追加文件内容实例
2014/10/21 Python
python持久性管理pickle模块详细介绍
2015/02/18 Python
Python读写文件方法总结
2015/06/09 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
python初步实现word2vec操作
2020/06/09 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
职业培训师职业生涯规划
2014/02/18 职场文书
劲霸男装广告词
2014/03/21 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
《埃及的金字塔》教学反思
2014/04/07 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
党支部对照检查材料
2014/08/25 职场文书
怎样写辞职信
2015/02/27 职场文书
员工辞退通知书
2015/04/17 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
《废话连篇——致新手》——chinapizza
2022/04/05 无线电