Python Pandas 获取列匹配特定值的行的索引问题

 更新时间:2019年07月01日 09:33:10   作者:貔貅  
这篇文章主要介绍了Python Pandas 获取列匹配特定值的行的索引问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

给定一个带有列"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:  Get index of rows which column matches certain value

总结

以上所述是小编给大家介绍的Python Pandas 获取列匹配特定值的行的索引问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • python SOCKET编程基础入门

    python SOCKET编程基础入门

    这篇文章主要介绍了python SOCKET编程基础入门的相关资料,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-02-02
  • python判断是否汉字的5种方法实例

    python判断是否汉字的5种方法实例

    这篇文章主要给大家介绍了关于python判断是否汉字的5种方法,文中通过实例代码将判断的几种方法介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友可以参考下
    2023-06-06
  • M1芯片安装python3.9.1的实现

    M1芯片安装python3.9.1的实现

    这篇文章主要介绍了M1芯片安装python3.9.1的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Python的flask常用函数route()

    Python的flask常用函数route()

    这篇文章主要介绍了Python的flask常用函数route(),文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • 对python数据清洗容易遇到的函数-re.sub bytes string详解

    对python数据清洗容易遇到的函数-re.sub bytes string详解

    今天小编就为大家分享一篇对python数据清洗容易遇到的函数-re.sub bytes string详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Tensorflow分类器项目自定义数据读入的实现

    Tensorflow分类器项目自定义数据读入的实现

    这篇文章主要介绍了Tensorflow分类器项目自定义数据读入的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • python中的lambda表达式用法详解

    python中的lambda表达式用法详解

    这篇文章主要介绍了python中的lambda表达式用法,详细分析了lambda函数的功能、定义、使用方法与相关技巧,需要的朋友可以参考下
    2016-06-06
  • python使用socket 先读取长度,在读取报文内容示例

    python使用socket 先读取长度,在读取报文内容示例

    这篇文章主要介绍了python使用socket 先读取长度,在读取报文内容,涉及Python socket通信报文操作相关使用技巧,需要的朋友可以参考下
    2019-09-09
  • Python赋值语句后逗号的作用分析

    Python赋值语句后逗号的作用分析

    这篇文章主要介绍了Python赋值语句后逗号的作用,实例分析了Python赋值语句加入逗号实现类型转换的技巧,需要的朋友可以参考下
    2015-06-06
  • python的urllib.parse用法及说明

    python的urllib.parse用法及说明

    这篇文章主要介绍了python的urllib.parse用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09

最新评论