Home > Mobile >  Check if a value in one column is in a list in another column using pd.isin()
Check if a value in one column is in a list in another column using pd.isin()

Time:10-30

I have a DataFrame as below

df = pd.DataFrame({
    'x' : range(0,5),
    'y' : [[0,2],[3,4],[2,3],[3,4],[7,9]]
})

I would like to test for each row of x, if the value is in the list specified by column y

df[df.x.isin(df.y)]

so I would end up with:

enter image description here

Not sure why isin() does not work in this case

CodePudding user response:

df.x.isin(df.y) checks for each element x, e.g. 0, is equal to some of the values of df.y, e.g. is 0 equal to [0,2], no, and so on.

With this, you can just do a for loop:

df[ [x in y for x,y in zip(df['x'], df['y'])] ]

CodePudding user response:

Let us try explode with index loc

out = df.loc[df.explode('y').query('x==y').index.unique()]
Out[217]: 
   x       y
0  0  [0, 2]
2  2  [2, 3]
3  3  [3, 4]
  • Related