Biswankar Das
Biswankar Das

Reputation: 305

Find index value of a dataframe by comparing with another series

I am having problem while extracting index value from a data frame by comparing a dataframe column values with another list.

list=[a,b,c,d]

  data frame
by comparing list with column X
   X Y Z 
0  a r t
1  e t y
2  c f h
3  d r t
4  b g q
this should return the index values like

  X
0 a
4 b
2 c
3 d
I tried this method

z=dataframe.loc[(dataframe['X'] == list)]

Upvotes: 3

Views: 3839

Answers (2)

Scott Boston
Scott Boston

Reputation: 153460

You need to use isin:

Make sure your list is a list of strings, then use dropna to get rid of unwanted rows and columns.

list = ['a','b','c','d']
df[df.isin(list)].dropna(how='all').dropna(axis=1)

Or if you only wanted to compare with column X.

df.X[df.X.isin(list)]

Output:

   X
0  a
2  c
3  d
4  b

Upvotes: 1

ysearka
ysearka

Reputation: 3855

You should use isin as you are comparing to a list of elements:

dataframe = pd.DataFrame(columns = ['X','Y','Z'])
dataframe['X'] = ['a','e','c','d','b']
dataframe['Y'] = ['r','t','f','r','g']
dataframe['Z'] = ['t','y','h','y','k']
mylist = ['a','b','c','d']

(always post a way to create your dataframe in your question, it will be faster to answer)

dataframe[dataframe['X'].isin(mylist)].X

0    a
2    c
3    d
4    b
Name: X, dtype: object

Upvotes: 6

Related Questions