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设计模式编程的代理模式与抽象工厂模式
Jan 16 Python
Python OpenCV处理图像之滤镜和图像运算
Jul 10 Python
python设置环境变量的原因和方法
Jun 24 Python
python yield和Generator函数用法详解
Feb 10 Python
python 遗传算法求函数极值的实现代码
Feb 11 Python
Python使用matplotlib绘制圆形代码实例
May 27 Python
python 引用传递和值传递详解(实参,形参)
Jun 05 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
详解anaconda安装步骤
Nov 23 Python
Django celery异步任务实现代码示例
Nov 26 Python
详细介绍python类及类的用法
May 31 Python
浅析Python实现DFA算法
Jun 26 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
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
php搜索文件程序分享
2015/10/30 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
filemanage功能中用到的lib.js
2007/04/08 Javascript
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
2011/10/13 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
2017/06/12 jQuery
vue环境搭建简单教程
2017/11/07 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
Windows下搭建python开发环境详细步骤
2020/07/20 Python
python reduce 函数使用详解
2017/12/05 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
后勤主管岗位职责
2014/03/01 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
绿色校园广播稿
2014/10/13 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
生日赠语
2015/06/23 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
四年级作文之植物
2019/09/20 职场文书