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中的字典容器
Apr 14 Python
Python如何判断数独是否合法
Sep 08 Python
Python实现数据结构线性链表(单链表)算法示例
May 04 Python
python opencv实现证件照换底功能
Aug 19 Python
Python 异常处理Ⅳ过程图解
Oct 18 Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 Python
Python如何解除一个装饰器
Aug 07 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 Python
详解pycharm配置python解释器的问题
Oct 15 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 Python
PyCharm2020.3.2安装超详细教程
Feb 08 Python
使用Python开发贪吃蛇游戏 SnakeGame
Apr 30 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 金额数字转换成英文
2010/05/06 PHP
PHP 工厂模式使用方法
2010/05/18 PHP
php Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
详解PHP原生DOM对象操作XML的方法
2016/10/17 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
可以文本显示的公告栏的js代码
2007/03/11 Javascript
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
nodejs+mongodb+vue前后台配置ueditor的示例代码
2018/01/02 NodeJs
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
Python 3.7新功能之dataclass装饰器详解
2018/04/21 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
python绘制随机网络图形示例
2019/11/21 Python
美国高街时尚品牌:OASAP
2016/07/24 全球购物
写好求职信第一句话的技巧
2013/10/26 职场文书
医院实习接收函
2014/01/12 职场文书
给客户的感谢信
2015/01/21 职场文书
三好学生个人总结
2015/02/15 职场文书
遗失说明具结保证书
2015/02/26 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
结婚主持人致辞
2015/07/28 职场文书
关于 Python json中load和loads区别
2021/11/07 Python