How to Get Row Numbers in a Pandas DataFrame


Often you may want to get the row numbers in a pandas DataFrame that contain a certain value. Fortunately this is easy to do using the .index function. This tutorial shows several examples of how to use this function in practice.

Example 1: Get Row Numbers that Match a Certain Value

Suppose we have the following pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'points': [25, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 9, 12],
                   'team': ['Mavs', 'Mavs', 'Spurs', 'Celtics', 'Warriors']})

#view DataFrame 
print(df)

        points	assists	team
0	25	5	Mavs
1	12	7	Mavs
2	15	7	Spurs
3	14	9	Celtics
4	19	12	Warriors

We can use the following syntax to get the row numbers where ‘team’ is equal to Mavs:

#get row numbers where 'team' is equal to Mavs
df[df['team'] == 'Mavs'].index

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

We can see that the team name is equal to ‘Mavs’ at rows indices 0 and 1.

We can also get the row numbers where the team name is in a certain list of team names:

#get row numbers where 'team' is equal to Mavs or Spurs
filter_list = ['Mavs', 'Spurs']

#return only rows where team is in the list of team names
df[df.team.isin(filter_list)].index

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

We can see that the team name is equal to ‘Mavs’ or ‘Spurs’ at rows indices 01, and 2.

Example 2: Get a Single Row Number

Suppose we have the following pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'points': [25, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 9, 12],
                   'team': ['Mavs', 'Mavs', 'Spurs', 'Celtics', 'Warriors']})

If you know that only one row matches a certain value, you can retrieve that single row number using the following syntax:

#get the row number where team is equal to Celtics
df[df['team'] == 'Celtics'].index[0]

3

We can see that team is equal to ‘Celtics’ at row index number 3.

Example 3: Get Sum of Row Numbers

Suppose we have the following pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'points': [25, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 9, 12],
                   'team': ['Mavs', 'Mavs', 'Spurs', 'Celtics', 'Warriors']})

If you want to know the total number of rows where a column is equal to a certain value, you can use the following syntax:

#find total number of rows where team is equal to Mavs
len(df[df['team'] == 'Celtics'].index)

2

We can see that team is equal to ‘Mavs’ in a total of rows.

Additional Resources

How to Find Unique Values in Multiple Columns in Pandas
How to Filter a Pandas DataFrame on Multiple Conditions
How to Count Missing Values in a Pandas DataFrame

Leave a Reply

Your email address will not be published. Required fields are marked *