Ali Parahoo
Ali Parahoo

Reputation: 161

Dropping different elements from different columns at once using Pandas

I am trying to remove different elements from different columns from the data frame.

Here is what I have tried so far

xdf
Out[46]: 
   Name        Score1   Score2  Score3        Score4
0  Jack            10  Perfect      10       Perfect
1  Jill            10       10      10  Not Finished
2  Jane            20       10      10             5
3   Tom  Not Finished       15      10             5

drop_list = ["Perfect","Not Finished"]

xdf[~xdf["Score1"].isin(drop_list)]
Out[48]: 
   Name Score1   Score2  Score3        Score4
0  Jack     10  Perfect      10       Perfect
1  Jill     10       10      10  Not Finished
2  Jane     20       10      10             5

the above works great if I want to drop from only 1 column but I want to drop across multiple columns (Score1,Score2,Score3,Score4)

The following does not seem to work either:

xdf[~xdf[["Score1","Score2","Score3","Score4"]].isin(drop_list)]
Out[49]: 
  Name Score1 Score2  Score3 Score4
0  NaN     10    NaN      10    NaN
1  NaN     10     10      10    NaN
2  NaN     20     10      10      5
3  NaN    NaN     15      10      5

any ideas? thank you

Upvotes: 1

Views: 24

Answers (1)

jezrael
jezrael

Reputation: 863501

Use DataFrame.any for test at lest one True per rows:

drop_list = ["Perfect","Not Finished"]
df = xdf[~xdf[["Score1","Score2","Score3","Score4"]].isin(drop_list).any(axis=1)]

print (df)
   Name Score1 Score2  Score3 Score4
2  Jane     20     10      10      5

print (xdf[["Score1","Score2","Score3","Score4"]].isin(drop_list))
   Score1  Score2  Score3  Score4
0   False    True   False    True
1   False   False   False    True
2   False   False   False   False
3    True   False   False   False

print (xdf[["Score1","Score2","Score3","Score4"]].isin(drop_list).any())
Score1     True
Score2     True
Score3    False
Score4     True
dtype: bool

print (~xdf[["Score1","Score2","Score3","Score4"]].isin(drop_list).any())

Score1    False
Score2    False
Score3     True
Score4    False
dtype: bool

Upvotes: 1

Related Questions