Remove rows in dataframe based on condition, dataframe vs list boolean?

Viewed 266
import pandas as pd
data = [['a',1],['b',2],['c',3]]
df = pd.DataFrame(data, columns = ['letter', 'number']
exclude_list = [2, 4, 6]

I want to change row 2 in df, where "number" == 2, to empty/nan. I want to do this by comparing the "number" column to the exclude list, and if there is a match, exclude that row.

2 Answers

df.loc[df['number'].isin(exclude_list), 'number'] = None

  letter  number
0      a     1.0
1      b     NaN
2      c     3.0

For the whole row df.loc[df['number'].isin(exclude_list), :] = None

  letter  number
0      a     1.0
1   None     NaN
2      c     3.0
Related