当前位置: 首页 > 知识库问答 >
问题:

Python Pandas:获取列匹配某个值的行的索引

宗项禹
2023-03-14

给定一个具有“boolcol”列的数据frame,我们希望找到其中“boolcol”的值==True的数据frame的索引

我目前有一种迭代的方法来完成它,它非常有效:

for i in range(100,3000):
    if df.iloc[i]['BoolCol']== True:
         print i,df.iloc[i]['BoolCol']
df[df['BoolCol'] == True].index.tolist()
df.iloc[i]['BoolCol']

共有1个答案

宋华美
2023-03-14

df.iloc[i]返回dfith行。i不引用索引标签,i是基于0的索引。

相反,属性index返回实际的索引标签,而不是数字行索引:

df.index[df['BoolCol'] == True].tolist()

或者等价于,

df.index[df['BoolCol']].tolist()
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')
In [58]: df.loc[idx]
Out[58]: 
   BoolCol
10    True
40    True
50    True

[3 rows x 1 columns]
In [55]: df.loc[df['BoolCol']]
Out[55]: 
   BoolCol
10    True
40    True
50    True

[3 rows x 1 columns]
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
 类似资料:
  • 我有以下数据框: 我正在尝试为这个熊猫数据框确定适当的语法,如何为列“通道”等于A或B的所有实例编制索引。一旦找到所有实例,我想打印出来。此外,我希望能够在脚本中调用每个索引以获得进一步的应用程序。 我希望显示器是: 然后我想有一个“for循环”,它遍历并分别打印出每个索引实例,这样就很容易识别并单独调用它们,以便在脚本中进一步使用。有人能给点建议吗?

  • 本文向大家介绍Python Pandas 获取列匹配特定值的行的索引问题,包括了Python Pandas 获取列匹配特定值的行的索引问题的使用技巧和注意事项,需要的朋友参考一下 给定一个带有列"BoolCol"的DataFrame,如何找到满足条件"BoolCol" == True的DataFrame的索引 目前有迭代的方式来做到这一点: 这虽然可行,但不是标准的 Pandas 方式。经过一番研

  • 给定一个列为“BoolCol”的数据帧,我们想要查找数据帧的索引,其中“BoolCol”的值 == True 我目前有一种迭代的方法来完成它,它非常有效: 但这不是熊猫的正确方法。经过一些研究,我目前正在使用以下代码: 这个给了我一个索引列表,但是它们不匹配,当我通过执行以下操作来检查它们时: 结果其实是假的!! 熊猫的正确做法是什么?

  • 我正在读熊猫的CSV文件。假设CSV如下所示: 我想从(即)中获取值,其中和。我确信只有一行符合此条件。 所以我在做这样的事情: 我尝试了来给我这个值,但是它返回了一个数据帧,索引是此行的行号。此处的行号不是0,而是1(即CSV文件中的原始行号),这不允许我执行 如何在这里获得列值?

  • 问题内容: 假设您有两个2D数组A和B,并且要检查B中包含A行的位置。如何使用numpy最有效地做到这一点? 例如 我知道如何使用(检查2d numpy数组中的成员资格 )检查A的行是否在B中,但这不会产生索引图。 该映射的目的是(最终)基于某些列将两个数组合并在一起。 当然,可以逐行执行此操作,但这效率非常低,因为我的数组具有形状(50 Mio.,20)。 一种替代方法是使用pandas mer

  • 问题内容: 我有一个。我想获取具有特定用户名的流中(第一个)用户的索引。我并不想实际上要求对它们进行描述,而只是具有相同的用户名。 我可以想到执行此操作的丑陋方法(重复和计数),但是感觉应该有一个不错的方法可以执行此操作,可能是使用Streams。到目前为止,我拥有的最好的是: 这不是我写过的最糟糕的代码,但这不是很好。它也不是那么灵活,因为它依赖于一个映射类型的函数,该函数具有描述您要寻找的属性