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创建日历实例
Aug 21 Python
python实现简单的socket server实例
Apr 29 Python
利用python3随机生成中文字符的实现方法
Nov 24 Python
python使用logging模块发送邮件代码示例
Jan 18 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
python MySQLdb使用教程详解
Mar 20 Python
Python进阶之自定义对象实现切片功能
Jan 07 Python
详解Python3 对象组合zip()和回退方式*zip
May 15 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
python实现邮件自动发送
Aug 10 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 Python
Python scrapy爬取小说代码案例详解
Jul 09 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中$_SERVER的详细参数与说明
2008/07/29 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
php7性能提升的原因详解
2019/10/13 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
InnerHtml和InnerText的区别分析
2009/03/13 Javascript
jquery 框架使用教程 AJAX篇
2009/10/11 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
2013/12/10 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
AngularJS基础 ng-include 指令示例讲解
2016/08/01 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
Python书单 不将就
2017/07/11 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
python3安装crypto出错及解决方法
2019/07/30 Python
使用Python完成15位18位身份证的互转功能
2019/11/06 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
超市业务员岗位职责
2013/12/05 职场文书
烹饪自我鉴定
2014/03/01 职场文书
优秀经理获奖感言
2014/03/04 职场文书
法定代表人授权委托书
2014/04/04 职场文书
培养联系人考察意见
2015/06/01 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
Django框架中模型的用法
2022/06/10 Python