全文共401字,预计阅读时间5分钟。

层次化索引是pandas的一项重要功能,它能使你在一个轴上有多个索引级别,也就是说,它能使你以低维度形式处理高维度数据,比如下面的代码:

data = pd.Series(np.random.randn(10),index=[['a','a','a','b','b','b','c','c','d','d'],[1,2,3,1,2,3,1,2,2,3]])
data#输出

a  1    0.4979702   -0.0423773   -0.018719b  1    0.0614122   -1.3138883    0.751478c  1   -0.2413292   -1.945047d  2    0.4607863   -0.411931dtype: float64data.index#输出MultiIndex(levels=[['a', 'b', 'c', 'd'], [1, 2, 3]],labels=[[0, 0, 0, 1, 1, 1, 2, 2, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 1, 2]])

有了层次化索引之后,我们很容易的访问分块数据:

data['b']#输出1    0.0614122   -1.3138883    0.751478dtype: float64data[:,2]#输出a   -0.042377b   -1.313888c   -1.945047d    0.460786dtype: float64

层次化索引在数据重塑和基于分组的操作中扮演重要的角色。比如,上面的数据可以使用unstack方法重塑成为一个DataFrame:

data.unstack()#输出1   2   3a   0.497970    -0.042377   -0.018719b   0.061412    -1.313888   0.751478c   -0.241329   -1.945047   NaN
d   NaN 0.460786    -0.411931

unstack的逆运算是stack()

data.unstack().stack()#输出a  1    0.4979702   -0.0423773   -0.018719b  1    0.0614122   -1.3138883    0.751478c  1   -0.2413292   -1.945047d  2    0.4607863   -0.411931dtype: float64

DataFrame的行列索引都可以使用层次化索引:

frame = pd.DataFrame(np.arange(12).reshape((4,3)),index=[['a','a','b','b'],[1,2,1,2]],columns=[['Ohio','Ohio','Colorado'],['Green','Red','Green']])
frame
#输出
Ohio    Colorado
Green   Red Greena   1   0   1   22   3   4   5b   1   6   7   82   9   10  11

我们可以创建层次化索引MulitIndex:

index = pd.MultiIndex.from_arrays([['Ohio','Ohio','Colorado'],['Green','Red','Green']],names=['state','color'])index

#输出MultiIndex(levels=[['Colorado', 'Ohio'], ['Green', 'Red']],                  labels=[[1, 1, 0], [0, 1, 0]],                   names=['state', 'color'])frame.columns=indexframe

#输出state   Ohio    Coloradocolor   Green   Red Greena   1   0   1   22   3   4   5b   1   6   7   82   9   10  11

我们可以给我们的索引赋予名字:

frame.index.names=['key1','key2']
frame
#输出
state   Ohio    Coloradocolor   Green   Red Green
key1    key2            a   1   0   1   22   3   4   5b   1   6   7   82   9   10  11

我们可以使用swaplevel交换两个索引的级别,swaplevel接受两个级别编号或者名称,并返回一个互换了级别的新对象:

frame.swaplevel('key1','key2')#输出
state   Ohio    Coloradocolor   Green   Red Green
key2    key1            1   a   0   1   22   a   3   4   51   b   6   7   82   b   9   10  11

使用层次化索引时,sort_index中的level指定了根据哪个索引级别进行排序,sum等汇总统计函数中的level参数指定了根据哪个索引级别进行汇总统计:

frame.sort_index(level = 0)frame.sum(level='key2')frame.sum(level='color',axis=1)

原文链接:https://mp.weixin.qq.com/s?__biz=MzI1MzY0MzE4Mg==&mid=2247483787&idx=2&sn=6667a9cf3a5809d9aab5efb9e209dc7d&chksm=e9d0114adea7985cc41bb218a46d368ff243ad72188da83c22ead3962d5ebcd524b8ac62cba0&scene=21#wechat_redirect

查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:

www.leadai.org

请关注人工智能LeadAI公众号,查看更多专业文章

大家都在看

LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础

Pandas-层次化索引相关推荐

  1. Pandas 基础 (5) —— 处理缺失数据及层次化索引

    处理缺失数据 pandas 使用浮点值 NaN (Not a Number)表示浮点和非浮点数组中的缺失数据.它只是一个便于被检测出来的标记而已. In [168]: data = Series([' ...

  2. Pandas对象的层次化索引——【from_tuples()、from_arrays()、from_product()、swaplevel()、sort_index()、sort_values()】

    文章目录 层次化索引的概念 层次化索引的创建 使用嵌套列表的方式构造层次化索引对象 Series对象 DataFrame对象 通过MultiIndex类的方法构建层次化索引 通过from_tuples ...

  3. 数据分析之pandas学习笔记(六)(层次化索引、重塑、轴向旋转、行列变换、合并表数据)

    数据分析之Pandas学习笔记(六)(层次化索引.重塑.轴向旋转.行列变换.合并表数据) level层次化索引 unstack()与stack()进行重塑,即:行列索引变换 swaplevel()交换 ...

  4. pandas mysql index_Pandas从入门到精通(3)- Pandas多级索引MultiIndex

    首先了解一下什么是多级索引,以及它的作用,为什么要有这个玩意. 多级索引也称为层次化索引(hierarchical indexing),是指数据在一个轴上(行或者列)拥有多个(两个以上)索引级别.之所 ...

  5. 数据分析索引总结(中)Pandas多级索引

    Datawhale干货 作者:闫钟峰,Datawhale优秀学习者 寄语:本文介绍了创建多级索引.多层索引切片.多层索引中的slice对象.索引层的交换等内容. 创建多级索引 1. 通过from_tu ...

  6. 数据分析工具Pandas(2):Pandas的索引操作

    数据分析工具Pandas(1):Pandas的数据结构 数据分析工具Pandas(2):Pandas的索引操作 Pandas的索引操作 索引对象Index 1. Series和DataFrame中的索 ...

  7. pandas分层索引(层级索引、MultiIndex)的创建、取值、切片、统计计算以及普通索引和层级索引的转换方法

    pandas分层索引(层级索引.MultiIndex)的创建.取值.切片.统计计算以及普通索引和层级索引的转换方法 @TOC 多层索引的Series 层级索引的创建 层级索引(multi index) ...

  8. pandas数据索引之loc、iloc、ix详解及实例

    pandas数据索引之loc.iloc.ix详解及实例 先来个总结: loc函数:通过行索引 "Index" 中的具体值来取行数据(如取"Index"为&quo ...

  9. Pandas简明教程:四、Pandas数据索引方式

    文章目录 1.以类似`dict`的方式访问 2.以属性方式访问数据 3.访问行(slicing) 4.用`loc`方法访问不同行列 5.用`iloc`方法直接访问行列 6.其它方式 本系列教程教程完整 ...

  10. pandas把索引变成列

    pandas把索引变成列,只需要使用reset_index.这样index就会变成一列变量出现在元数据表中. 比如原来的数据表是上面这样, 使用reset_index 就变成这样 具体reset_in ...

最新文章

  1. 【C++】引用与变量
  2. oracle查看临时表空间文件,Oracle-临时表空间
  3. 实战react技术栈+express前后端博客项目(8)-- 前端管理界面标签管理+后端对应接口开发...
  4. python装饰器副作用_对Python 装饰器的理解心得
  5. ORACLE 表类型 OLTP和OLAP
  6. linux下devel包的作用
  7. mysql精讲_Mysql 索引精讲
  8. setjmp.h(c标准库)
  9. python图像对比_python+PIL实现图片对比(一)
  10. Spring-Bean配置-使用外部属性文件(转)
  11. 广东省30m二级分类土地利用数据(矢量)
  12. 启动vpn报网络扩展错误(问题篇)
  13. Mac安装 Navicat
  14. 线路板板SMT贴片中二极管正负极区分方法
  15. 手机邮箱中的邮件里的链接的打开方式/app更改方法
  16. Revit:一般建筑的主要结构汇总和构建参数化族方法
  17. laravel-jwt attempt()异常问题处理
  18. Fabric实战(四)-多机部署fabric网络-solo
  19. 《国民经济行业分类》(《国民经济行业分类》)
  20. Vue锚链接(两种方法) scrollIntoView

热门文章

  1. python字符串大全_Python 字符串操作方法大全
  2. pythonfor循环输入_Python之for循环的使用
  3. 【windows】windows允许 ICMP协议(允许ping)
  4. 微信公众号服务器模式,微信公众平台的两种模式
  5. usr bin java快捷方式_/ usr / bin / sudo必须由uid 0拥有并设置setuid位
  6. oracle sql的应用场景,oracle 3个适用sql场景
  7. 高校表白app使用体验
  8. SCUT - 299 - Kaildls的数组划分 - dp - 高精
  9. [LeetCode] 234. Palindrome Linked List_Easy tag: Linked List
  10. Java并发编程-ReentrantLock