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 基础学习教程
Feb 08 Python
python安装cx_Oracle模块常见问题与解决方法
Feb 21 Python
windows下安装Python的XlsxWriter模块方法
May 03 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
Django框架首页和登录页分离操作示例
May 28 Python
django框架实现一次性上传多个文件功能示例【批量上传】
Jun 19 Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 Python
基于django2.2连oracle11g解决版本冲突的问题
Jul 02 Python
Django权限控制的使用
Jan 07 Python
python 制作网站小说下载器
Feb 20 Python
Python控制台输出俄罗斯方块移动和旋转功能
Apr 18 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
一个oracle+PHP的查询的例子
2006/10/09 PHP
如何在PHP中使用Oracle数据库(4)
2006/10/09 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
node.js中的fs.mkdir方法使用说明
2014/12/17 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
关于jquery中attr()和prop()方法的区别
2018/05/28 jQuery
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
Javascript实现打鼓效果
2021/01/29 Javascript
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
Python Requests 基础入门
2016/04/07 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
药学专业大学生个人的自我评价
2013/11/04 职场文书
物流专业毕业生推荐信范文
2013/11/18 职场文书
数控专业应届生求职信
2013/11/27 职场文书
档案信息化建设方案
2014/05/16 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
思想品德课教学反思
2016/02/24 职场文书
导游词之沈阳清昭陵
2019/12/28 职场文书
pytorch中的numel函数用法说明
2021/05/13 Python
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
MySQL数据库实验实现简单数据库应用系统设计
2022/06/21 MySQL