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脚本实现查找webshell的方法
Jul 31 Python
用python 制作图片转pdf工具
Jan 30 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
python实现图像拼接
Mar 05 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 Python
Django QuerySet查询集原理及代码实例
Jun 13 Python
keras 自定义loss层+接受输入实例
Jun 28 Python
Tensorflow全局设置可见GPU编号操作
Jun 30 Python
python递归函数用法详解
Oct 26 Python
python利用pandas分析学生期末成绩实例代码
Jul 09 Python
Python之基础函数案例详解
Aug 30 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/01/19 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
2014/11/19 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
jquery.validate使用攻略 第二部
2010/07/01 Javascript
jQuery Autocomplete自动完成插件
2010/07/17 Javascript
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
使用jquery为table动态添加行的实现代码
2011/03/30 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
js数组操作学习总结
2013/11/04 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
2014/02/13 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
js排序与重组的实例讲解
2017/08/28 Javascript
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
python实现flappy bird游戏
2018/12/24 Python
详解numpy.meshgrid()方法使用
2019/08/01 Python
深入了解python列表(LIST)
2020/06/08 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
《小石潭记》教学反思
2014/02/13 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
2014年物资管理工作总结
2014/12/02 职场文书
2015年元宵节活动总结
2015/02/06 职场文书
安全保证书格式
2015/02/28 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery