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和php通信乱码问题解决方法
Apr 15 Python
不可错过的十本Python好书
Jul 06 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 Python
Python实现的生产者、消费者问题完整实例
May 30 Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 Python
python监控文件并且发送告警邮件
Jun 21 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
详解Python给照片换底色(蓝底换红底)
Mar 22 Python
python可迭代对象去重实例
May 15 Python
python3实现名片管理系统(控制台版)
Nov 29 Python
python BeautifulSoup库的安装与使用
Dec 17 Python
python游戏开发之pygame实现接球小游戏
Apr 22 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 XMLWriter类的简单示例代码(RSS输出)
2011/09/30 PHP
php简单判断文本编码的方法
2015/07/30 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
JsRender for object语法简介
2014/10/31 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
vue中v-model的应用及使用详解
2018/06/27 Javascript
详解vue几种主动刷新的方法总结
2019/02/19 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
jQuery实现本地存储
2020/12/22 jQuery
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
Python中装饰器高级用法详解
2017/12/25 Python
python逆序打印各位数字的方法
2018/06/25 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
python matplotlib绘制三维图的示例
2020/09/24 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
自我鉴定范文200字
2013/10/02 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
软件测试专业推荐信
2014/09/18 职场文书
体育运动会广播稿
2014/10/05 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
迟到检讨书范文
2015/01/27 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
收入证明范本
2015/06/12 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL
MyBatis 动态SQL全面详解
2021/10/05 MySQL