如何在Pandas的数据框中获取行号?

spr*_*ssd 30 python pandas

如何使用Pandas获取包含特定列中某个值的数据框中的行数?例如,我有以下数据帧:

     ClientID  LastName
0    34        Johnson
1    67        Smith
2    53        Brows  
Run Code Online (Sandbox Code Playgroud)

如何在"LastName"列中找到"Smith"行的编号?

joe*_*lom 35

获得与'Smith'匹配的所有指数

>>> df.loc[df['LastName']=='Smith'].index
Int64Index([1], dtype='int64')
Run Code Online (Sandbox Code Playgroud)

要么

>>> df.loc[df['LastName']=='Smith'].index.values
array([1])
Run Code Online (Sandbox Code Playgroud)

或者如果只有一个,你想要整数,只需要子集

>>> df.loc[df['LastName']=='Smith'].index[0]
1
Run Code Online (Sandbox Code Playgroud)

  • 一般来说,索引和行号是不同的。例如,索引可以引用原始 DataFrame 的行号,并且我们可以处理原始 DataFrame 的子集。所以需要一种不同的方法;也许可以在将行号视为索引之前重置索引。 (3认同)
  • 这给出了索引而不是行号。索引可以是任何内容,包括字符串,具体取决于数据帧的源。虽然在大多数情况下它会起作用,但它并不能满足问题的要求。 (3认同)

piR*_*red 9

df.index[df.LastName == 'Smith']
Run Code Online (Sandbox Code Playgroud)

要么

df.query('LastName == "Smith"').index
Run Code Online (Sandbox Code Playgroud)

将返回所有行索引,其中LastNameSmith

Int64Index([1], dtype='int64')
Run Code Online (Sandbox Code Playgroud)

  • df.index完美运行。谢谢。 (2认同)
  • 如果只有一个你想要整数,只需要子集:`df.index [df.LastName =='Smith'] [0]` (2认同)

Vai*_*ali 6

df.loc[df.LastName == 'Smith']
Run Code Online (Sandbox Code Playgroud)

将返回行

    ClientID    LastName
1   67          Smith
Run Code Online (Sandbox Code Playgroud)

df.loc[df.LastName == 'Smith'].index
Run Code Online (Sandbox Code Playgroud)

将返回索引

Int64Index([1], dtype='int64')
Run Code Online (Sandbox Code Playgroud)

注意:列名称“LastName”和“Last Name”甚至“lastname”是三个唯一名称。最佳做法是首先使用 df.columns 检查确切的名称。如果你真的需要去掉所有空格的列名,你可以先做

df.columns = [x.strip().replace(' ', '') for x in df.columns]
Run Code Online (Sandbox Code Playgroud)