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的urllib库提交WEB表单
Feb 24 Python
Python使用multiprocessing创建进程的方法
Jun 04 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
Jun 16 Python
python 类对象和实例对象动态添加方法(分享)
Dec 31 Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 Python
python如何求解两数的最大公约数
Sep 27 Python
Python实现的KMeans聚类算法实例分析
Dec 29 Python
Appium Python自动化测试之环境搭建的步骤
Jan 23 Python
浅析python redis的连接及相关操作
Nov 07 Python
如何使用python传入不确定个数参数
Feb 18 Python
Django如何实现防止XSS攻击
Oct 13 Python
基于python+selenium自动健康打卡的实现代码
Jan 13 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中设置session用memcache来存储的方法总结
2016/01/14 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
jQuery 选择器理解
2010/03/16 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
js jquery数组介绍
2012/07/15 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
深入了解Vue3模板编译原理
2020/11/19 Vue.js
python学习手册中的python多态示例代码
2014/01/21 Python
pyside写ui界面入门示例
2014/01/22 Python
Python中使用dom模块生成XML文件示例
2015/04/05 Python
Python中的XML库4Suite Server的介绍
2015/04/14 Python
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
旧时光糖果:Old Time Candy
2018/02/05 全球购物
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
本科生个人求职自荐信
2013/09/26 职场文书
个人找工作求职简历的自我评价
2013/10/20 职场文书
出纳岗位职责模板
2013/11/27 职场文书
经销商年会策划方案
2014/05/29 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
大学生英文求职信范文
2015/03/19 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
2016年暑假家长对孩子评语
2015/12/01 职场文书