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中正则表达式的用法实例汇总
Aug 18 Python
Python中的面向对象编程详解(上)
Apr 13 Python
Python3遍历目录树实现方法
May 22 Python
Python之list对应元素求和的方法
Jun 28 Python
Sanic框架Cookies操作示例
Jul 17 Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 Python
numpy:找到指定元素的索引示例
Nov 26 Python
python3 正则表达式基础廖雪峰
Mar 25 Python
Python sorted排序方法如何实现
Mar 31 Python
Python3操作读写CSV文件使用包过程解析
Apr 10 Python
Anaconda和ipython环境适配的实现
Apr 22 Python
如何利用Python 进行边缘检测
Oct 14 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中使用正则表达式提取中文实现笔记
2015/01/20 PHP
php获取本周星期一具体日期的方法
2015/04/20 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
由Javascript实现的页面日历
2011/11/04 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
jQuery模仿单选按钮选中效果
2016/06/24 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
js前端导出Excel的方法
2017/11/01 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
Python获取系统默认字符编码的方法
2015/06/04 Python
python并发编程之线程实例解析
2017/12/27 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
python如何快速拼接字符串
2020/10/28 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
什么是属性访问器
2015/10/26 面试题
材料工程专业毕业生求职信
2014/03/04 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
安全责任书
2015/01/29 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers