Python Pandas 获取列匹配特定值的行的索引问题


Posted in Python onJuly 01, 2019

给定一个带有列"BoolCol"的DataFrame,如何找到满足条件"BoolCol" == True的DataFrame的索引

目前有迭代的方式来做到这一点:

for i in range(100,3000):
  if df.iloc[i]['BoolCol']== True:
     print i,df.iloc[i]['BoolCol']

这虽然可行,但不是标准的 Pandas 方式。经过一番研究,我目前正在使用这个代码:

df[df['BoolCol'] == True].index.tolist()

这个给了我一个索引列表,但跟我想要的不匹配,当检查:

df.iloc[i]['BoolCol']

其结果实际上是False!

如何使用正确的 Pandas 方式做到这一点?

最佳解决方法

df.iloc[i]返回df的第i行。 i不引用索引标签,i是从0开始的索引。

相反,属性index返回实际的索引标签,而不是数字row-indices:

df.index[df['BoolCol'] == True].tolist()

或者等同地,

df.index[df['BoolCol']].tolist()

通过使用带有"unusual"索引的DataFrame,可以非常清楚地看到差异:

df = pd.DataFrame({'BoolCol': [True, False, False, True, True]},
    index=[10,20,30,40,50])
In [53]: df
Out[53]: 
  BoolCol
10  True
20  False
30  False
40  True
50  True
[5 rows x 1 columns]
In [54]: df.index[df['BoolCol']].tolist()
Out[54]: [10, 40, 50]

如果你想使用索引,

In [56]: idx = df.index[df['BoolCol']]
In [57]: idx
Out[57]: Int64Index([10, 40, 50], dtype='int64')

那么您可以使用loc而不是iloc选择行:

In [58]: df.loc[idx]
Out[58]: 
  BoolCol
10  True
40  True
50  True

[3 rows x 1 columns]

请注意,loc也可以接受布尔数组:

In [55]: df.loc[df['BoolCol']]
Out[55]: 
  BoolCol
10  True
40  True
50  True

[3 rows x 1 columns]

如果您有一个布尔数组mask,并且需要序数索引值,则可以使用np.flatnonzero来计算它们:

In [110]: np.flatnonzero(df['BoolCol'])
Out[112]: array([0, 3, 4])

使用df.iloc按顺序索引选择行:

In [113]: df.iloc[np.flatnonzero(df['BoolCol'])]
Out[113]: 
  BoolCol
10  True
40  True
50  True
python pandas

Python Pandas 获取列匹配特定值的行的索引问题

参考文献

Python Pandas:  Get index of rows which column matches certain value

总结

以上所述是小编给大家介绍的Python Pandas 获取列匹配特定值的行的索引问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python实现两个list求交集,并集,差集的方法示例
Aug 02 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
Python3.5内置模块之random模块用法实例分析
Apr 26 Python
python 中如何获取列表的索引
Jul 02 Python
Django使用中间键实现csrf认证详解
Jul 22 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
pygame实现俄罗斯方块游戏(AI篇1)
Oct 29 Python
python随机模块random的22种函数(小结)
May 15 Python
Python Mock模块原理及使用方法详解
Jul 07 Python
python opencv角点检测连线功能的实现代码
Nov 24 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
Jan 29 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 Python
Python动态语言与鸭子类型详解
Jul 01 #Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 #Python
使用python将mysql数据库的数据转换为json数据的方法
Jul 01 #Python
python字符串Intern机制详解
Jul 01 #Python
简单了解python单例模式的几种写法
Jul 01 #Python
python如何获取列表中每个元素的下标位置
Jul 01 #Python
Django自定义用户登录认证示例代码
Jun 30 #Python
You might like
PHP中类的继承和用法实例分析
2016/05/24 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
2019/02/27 PHP
显示js对象所有属性和方法的函数
2009/10/16 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
2017/07/17 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
React实现todolist功能
2020/12/28 Javascript
[57:55]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第二场 12.12
2020/12/16 DOTA
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
浅谈python中set使用
2016/06/30 Python
python实现上传文件到linux指定目录的方法
2020/01/03 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
Django通过设置CORS解决跨域问题
2020/11/26 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
纯css3实现走马灯效果
2014/12/26 HTML / CSS
村当支部个人对照检查材料思想汇报
2014/10/06 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
2014年变电站工作总结
2014/12/19 职场文书
防汛通知
2015/04/25 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python
Python集合set()使用的方法详解
2022/03/18 Python
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android