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编写一个在Linux下实现截图分享的脚本的教程
Apr 24 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
Jun 27 Python
Python读取指定目录下指定后缀文件并保存为docx
Apr 23 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
Oct 29 Python
Python基于mysql实现学生管理系统
Feb 21 Python
python中正则表达式与模式匹配
May 07 Python
Python替换月份为英文缩写的实现方法
Jul 15 Python
tensorflow查看ckpt各节点名称实例
Jan 21 Python
Python3实现飞机大战游戏
Apr 24 Python
keras输出预测值和真实值方式
Jun 27 Python
python实现简单猜单词游戏
Dec 24 Python
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
Jun 08 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(7) php 字符串相关应用
2010/03/05 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
php中引用符号(&)的使用详细介绍
2016/12/06 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
php swoft框架实例用法
2020/12/22 PHP
运算符&&的三个不同层次
2013/04/07 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
node.js实现端口转发
2016/04/14 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
浅谈JavaScript正则表达式-非捕获性分组
2017/03/08 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
学习node.js 断言的使用详解
2019/03/18 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
TensorFlow如何实现反向传播
2018/02/06 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
详解Python3定时器任务代码
2019/09/23 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
纯css3实现效果超级炫的checkbox复选框和radio单选框
2014/09/01 HTML / CSS
HTML5引入的新数组TypedArray介绍
2012/12/24 HTML / CSS
商超业务员岗位职责
2014/03/12 职场文书
公司门卫岗位职责
2014/03/15 职场文书
二手房买卖协议书
2014/04/10 职场文书
《雪儿》教学反思
2014/04/17 职场文书
欢迎领导检查标语
2014/06/27 职场文书
司机岗位职责范本
2015/04/10 职场文书
Python一行代码实现自动发邮件功能
2021/05/30 Python