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 相关文章推荐
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
Feb 24 Python
Python使用random和tertools模块解一些经典概率问题
Jan 28 Python
python检测远程服务器tcp端口的方法
Mar 14 Python
在Python的Django框架的视图中使用Session的方法
Jul 23 Python
Python3中条件控制、循环与函数的简易教程
Nov 21 Python
Python基于多线程实现ping扫描功能示例
Jul 23 Python
django之跨表查询及添加记录的示例代码
Oct 16 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 Python
如何在django中实现分页功能
Apr 22 Python
详解查看Python解释器路径的两种方式
Oct 15 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
Jan 15 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网上商城购物车设计代码分享
2012/02/15 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
64位windows系统下安装Memcache缓存
2015/12/06 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
Javascript this指针
2009/07/30 Javascript
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
图片懒加载插件实例分享(含解析)
2017/01/09 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
2017/02/08 Javascript
node实现分片下载的示例代码
2018/10/17 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
js验证账户名是否重复
2020/05/26 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
python实现计算器简易版
2020/12/17 Python
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
日本最大化妆品和美容产品的综合口碑网站:cosme shopping
2019/08/28 全球购物
几道数据库的面试题或笔试题
2014/05/31 面试题
大三自我鉴定范文
2013/10/05 职场文书
党委书记岗位职责
2013/11/24 职场文书
电子专业毕业生自我鉴定
2014/01/22 职场文书
党员领导干部承诺书
2014/05/28 职场文书
机械系毕业生求职信
2014/05/28 职场文书
新农村建设标语
2014/06/24 职场文书
返乡农民工证明
2015/06/24 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书