Wie bekommt man die Zeilennummer in einem Datenrahmen in Pandas?

Wie kann ich mit Pandas die Nummer der Zeile in einem Datenrahmen ermitteln, die einen bestimmten Wert in einer bestimmten Spalte enthält? Ich habe zum Beispiel den folgenden Datenrahmen:

     ClientID  LastName
0    34        Johnson
1    67        Smith
2    53        Brows  

Wie kann ich die Nummer der Zeile finden, die den Wert 'Smith' in der Spalte 'LastName' enthält?

Lösung

Um alle Indizes zu erhalten, die mit 'Smith'

>>> df.loc[df['LastName']=='Smith'].index
Int64Index([1], dtype='int64')

oder

>>> df.loc[df['LastName']=='Smith'].index.values
array([1])

oder wenn es nur einen gibt und Sie die ganze Zahl wollen, unterteilen Sie einfach

>>> df.loc[df['LastName']=='Smith'].index[0]
1
Kommentare (0)
df.index[df.LastName == 'Smith']

Oder

df.query('LastName == "Smith"').index

Gibt alle Zeilenindizes zurück, bei denen Nachname Schmied ist

Int64Index([1], dtype='int64')
Kommentare (2)
df.loc[df.LastName == 'Smith']

gibt die Zeile

    ClientID    LastName
1   67          Smith

und

df.loc[df.LastName == 'Smith'].index

gibt den Index

Int64Index([1], dtype='int64')

HINWEIS: Die Spaltennamen 'LastName' und 'Last Name' oder auch 'lastname' sind drei eindeutige Namen. Am besten überprüfen Sie zunächst den genauen Namen mit df.columns. Wenn Sie die Spaltennamen wirklich von allen Leerzeichen befreien müssen, können Sie zunächst Folgendes tun

df.columns = [x.strip().replace(' ', '') for x in df.columns]
Kommentare (4)