Pick row(s) in data frame with many columns

Question:

My goal is to pick row index(s), given row data.

For instance, if a row data, list ['Parrot', 'Captive','BIG',0,0] is given,the answer should be 2 for my data frame below because the row data is located at index 2 row.

The problem is the number of columns are too many.

In this simple case, the number of columns is 5 (X1 ~ X5), though.

Is there a efficient way?

import pandas as pd
df = pd.DataFrame({'X1': ['Falcon', 'Falcon', 'Parrot', 'Parrot'],
                   'X2': ['Captive', 'Wild', 'Captive', 'Wild'],
                   'X3': ['BIG', 'SMALL', 'BIG', 'SMALL'],
                   'X4': [0,1,0,0],
                   'X5': [1,0,0,0]})
df
Asked By: Soon

||

Answers:

df[(df.X1 == 'Parrot') & (df.X3 == 'BIG')].index[0]

will give you the 2 you are looking for

Answered By: Enrique Martin

You can use the all function to make sure the row has all True boolean.

df[df.isin(['Parrot', 'Captive','BIG',0,0]).all(axis=1)].index

Int64Index([2], dtype='int64')
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.