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端口扫描系统实现方法
Nov 19 Python
浅谈Python中函数的参数传递
Jun 21 Python
Python编程判断这天是这一年第几天的方法示例
Apr 18 Python
Django项目中用JS实现加载子页面并传值的方法
May 28 Python
flask框架使用orm连接数据库的方法示例
Jul 16 Python
使用python 打开文件并做匹配处理的实例
Jan 02 Python
python利用Tesseract识别验证码的方法示例
Jan 21 Python
Python 中如何实现参数化测试的方法示例
Dec 10 Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 Python
python进度条显示-tqmd模块的实现示例
Aug 23 Python
anaconda升级sklearn版本的实现方法
Feb 22 Python
Python 中的 copy()和deepcopy()
Nov 07 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
第五节 克隆 [5]
2006/10/09 PHP
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
php保存信息到当前Session的方法
2015/03/16 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
Javascript MD4
2006/12/20 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
vue2 全局变量的设置方法
2018/03/09 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
Python实现从url中提取域名的几种方法
2014/09/26 Python
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
python简单的函数定义和用法实例
2015/05/07 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
Python各种扩展名区别点整理
2020/02/27 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
教你打造完美的创业计划书
2014/01/06 职场文书
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
挂职学习心得体会
2014/09/09 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang