在pandas多重索引multiIndex中选定指定索引的行方法


Posted in Python onNovember 16, 2018

在multiIndex中选定指定索引的行

我们在用pandas类似groupby来使用多重index时,有时想要对多个level中的某个index对应的行进行操作,就需要在dataframe中找到该index对应的行,在单层index中我们可以方便的使用df.loc[index]来选择,在多重Index中我们可以利用的类似的思路,然而其中也有一些小坑,记录如下。

1 index为有序的

1.1 创建测试数据

首先创建一个dataframe数据

df = pd.DataFrame({'class':['A','A','A','B','B','B','C','C'],
   'id':['a','b','c','a','b','c','a','b'],
   'value':[1,2,3,4,5,6,7,8]})

df中内容如下图:

在pandas多重索引multiIndex中选定指定索引的行方法

1.2 设置multiIndex

通过set_index设为多重索引

df = df.set_index(['class','id'])

设置索引后效果:

在pandas多重索引multiIndex中选定指定索引的行方法

1.3 切片筛选index

这里同样使用loc定位

df.loc[('A',slice(None)),:]

各参数的解释如下:

loc[(a,b),c]中第一个参数元组为索引内容,a为level0索引对应的内容,b为level1索引对应的内容

因为df是一个dataframe,所以要用c来指定列

这里‘A',指选择class中的A类

slice(None), 是Python中的切片操作,这里用来选择任意的id,要注意!不能使用‘:'来指定任意index

‘:',用来指定dataframe任意的列

执行后的结果如下:

在pandas多重索引multiIndex中选定指定索引的行方法

同样,如果想只保留id中的'a',则可以使用:

df.loc[(slice(None),'a'),:]

2 index无序

前面的例子对应的index列为数字或字母,是有序的,接下来我们看看index列为中文的情况。

2.1 创建无序测试数据

df2 = pd.DataFrame({'课程':['语文','语文','数学','数学'],'得分':['最高','最低','最高','最低'],'分值':[90,50,100,60]})
df2 = df2.set_index(['课程','得分'])

在pandas多重索引multiIndex中选定指定索引的行方法

2.2 尝试切片选择index

df2.loc[('语文',slice(None)),:]

我们进行同样的操作,这时会发现提示出错:

UnsortedIndexError: 'MultiIndex Slicing requires the index to be fully lexsorted tuple len (2), lexsort depth (0)'

这是因为此时的index无法进行排序,在pandas文档中提到:Furthermore if you try to index something that is not fully lexsorted, this can raise:

我们可以通过 df2.index.is_lexsorted()来检查index是否有序,

In[1]: df2.index.is_lexsorted()
out[1]: False

接下来,我们尝试对Index进行排序。(排序时要在level里指定index名)

2.3 对index排序后切片选择index

df2 = df2.sort_index(level='课程')
df2.loc[('语文',slice(None)),:]

在pandas多重索引multiIndex中选定指定索引的行方法

得到了我们想要的结果。

参考文献:pandas-docs-MultiIndex / Advanced Indexing

以上这篇在pandas多重索引multiIndex中选定指定索引的行方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 的列表遍历删除实现代码
Apr 12 Python
python3爬取数据至mysql的方法
Jun 26 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
浅谈python图片处理Image和skimage的区别
Aug 04 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
Python实现自定义读写分离代码实例
Nov 16 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
Mar 19 Python
Django import export实现数据库导入导出方式
Apr 03 Python
基于pytorch中的Sequential用法说明
Jun 24 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
Jun 11 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 Python
对Pandas MultiIndex(多重索引)详解
Nov 16 #Python
一百行python代码将图片转成字符画
Feb 19 #Python
Pandas GroupBy对象 索引与迭代方法
Nov 16 #Python
python实现指定字符串补全空格、前面填充0的方法
Nov 16 #Python
pandas 透视表中文字段排序方法
Nov 16 #Python
用Python实现数据的透视表的方法
Nov 16 #Python
pandas pivot_table() 按日期分多列数据的方法
Nov 16 #Python
You might like
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
第八节 访问方式 [8]
2006/10/09 PHP
PHP在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
php 生成文字png图片的代码
2011/04/17 PHP
php数组操作之键名比较与差集、交集赋值的方法
2014/11/10 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
JQuery与iframe交互实现代码
2009/12/24 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
vue多种弹框的弹出形式的示例代码
2017/09/18 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
Python实现线程状态监测简单示例
2018/03/28 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
PyQt5实现画布小程序
2020/05/30 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
总裁秘书岗位职责
2013/12/04 职场文书
运动会广播稿150字
2014/02/19 职场文书
学校搬迁方案
2014/06/15 职场文书
党员教师群众路线对照检查材料思想汇报
2014/09/29 职场文书
2015年元旦标语大全
2014/12/09 职场文书
党员活动总结
2015/02/04 职场文书
导盲犬小Q观后感
2015/06/11 职场文书