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同时兼容python2和python3的8个技巧分享
Jul 11 Python
Python实现购物程序思路及代码
Jul 24 Python
Python调用C# Com dll组件实战教程
Oct 12 Python
python+selenium实现登录账户后自动点击的示例
Dec 22 Python
django与小程序实现登录验证功能的示例代码
Feb 19 Python
Python使用LDAP做用户认证的方法
Jun 20 Python
python找出因数与质因数的方法
Jul 25 Python
python中hasattr()、getattr()、setattr()函数的使用
Aug 16 Python
python读写文件write和flush的实现方式
Feb 21 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
使用python对excel表格处理的一些小功能
Jan 25 Python
k-means & DBSCAN 总结
Apr 27 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
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
PHP Array交叉表实现代码
2010/08/05 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
jquery实现简单文字提示效果
2015/12/02 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
ES6 let和const定义变量与常量的应用实例分析
2019/06/27 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
Python中replace方法实例分析
2014/08/20 Python
Python函数式编程指南(二):从函数开始
2015/06/24 Python
python实现按任意键继续执行程序
2016/12/30 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
满月酒主持词
2014/03/27 职场文书
数学系毕业生求职信
2014/05/29 职场文书
主题团日活动总结
2014/06/25 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis