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从入门到精通(DAY 2)
Dec 20 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
Nov 14 Python
Python实现的插入排序算法原理与用法实例分析
Nov 22 Python
Python实现进程同步和通信的方法
Jan 02 Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 Python
python实现批量注册网站用户的示例
Feb 22 Python
Python使用字典的嵌套功能详解
Feb 27 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
python使用Qt界面以及逻辑实现方法
Jul 10 Python
python 字符串追加实例
Jul 20 Python
PyTorch实现更新部分网络,其他不更新
Dec 31 Python
基于Python实现全自动下载抖音视频
Nov 06 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/05/23 PHP
php简单分页类实现方法
2015/02/26 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
canvas绘制多边形
2017/02/24 Javascript
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
小程序实现带年月选取效果的日历
2018/06/27 Javascript
详解vue中组件参数
2018/07/09 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
学习python (1)
2006/10/31 Python
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
Python线程的两种编程方式
2015/04/14 Python
Python语法快速入门指南
2015/10/12 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
基于python的字节编译详解
2017/09/20 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
印度网上药店:1mg
2017/10/13 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
武汉瑞得软件笔试题
2015/10/27 面试题
证券期货行业个人的自我评价
2013/12/26 职场文书
党性教育心得体会
2014/09/03 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers