NeStack
NeStack

Reputation: 2014

Get indeces of given rows present in a dataframe

I have a dataframe that looks like this:

data = [[1, 10,100], [1.5, 15, 25], [7, 14, 70], [33,44,55]]
df = pd.DataFrame(data, columns = ['A', 'B','C'])

And has a visual expression like this

A    B    C
1    10   100
1.5  15   25
7    14   70
33   44   55

I have other data, that is a random subset of rows from the dataframe, so something like this

set_of_rows = [[1,10,100], [33,44,55]]

I want to get the indeces indicating the location of each row in set_of_rows inside df. So I need a function that does something like this:

indeces = func(subset=set_of_rows, dataframe=df)
In [1]: print(indeces)
Out[1]: [0, 3]

What function can do this? Tnx

Upvotes: 0

Views: 49

Answers (2)

Tasbiha
Tasbiha

Reputation: 106

You can check this thread out; Python Pandas: Get index of rows which column matches certain value

As far as I know, there is no intrinsic Panda function for your task so iteration is the only way to go about it. If you are concerned about dealing with the errors, you can add conditions in your loop that will take care of that.

for i in df.index:
    lst = df.loc[i].to_list()
    if lst in set_of_rows:
       return i
    else:
       return None

Upvotes: 1

IoaTzimas
IoaTzimas

Reputation: 10624

Try the following:

[i for i in df.index if df.loc[i].to_list() in set_of_rows]
#[0, 3]

If you want it as a function:

def func(set_of_rows, df):
    return [i for i in df.index if df.loc[i].to_list() in set_of_rows]

Upvotes: 1

Related Questions