Nabih Bawazir
Nabih Bawazir

Reputation: 7275

Pandas filtering (~isin) is not working

This is my data

 omzet_activity_paid_count_january_devices

No    Text    
1     dcbjkd
2     hdgfhds
3     dsdfs
33    jhsda
40    ydgyua

I am expecting to filter data like this

omzet_activity_paid_count_january_devices

No    Text    
3     dsdfs
40    ydgyua

This is what I did

user_internal = ['1','2','33']
omzet_activity_paid_count_january_devices = omzet_activity_paid_count_january_devices[~omzet_activity_paid_count_january_devices.No.isin(user_internal)]

The code above is not working, the output still like my original dataframe, what did I miss?

Upvotes: 2

Views: 6426

Answers (1)

jezrael
jezrael

Reputation: 863541

I think there is problem you have mixed types - numeric with strings.

omzet_activity_paid_count_january_devices.No.dtype
dtype('O')

omzet_activity_paid_count_january_devices.No.head().tolist()
[1, 2, 3, 33, 40] 

So convert column No to strings:

user_internal = ['1','2','33']
mask = ~omzet_activity_paid_count_january_devices.No.astype(str).isin(user_internal)
omzet_activity_paid_count_january_devices =  omzet_activity_paid_count_january_devices[mask]

Or change strings from list to ints:

user_internal = [1,2,33]
mask = ~omzet_activity_paid_count_january_devices.No.isin(user_internal)
omzet_activity_paid_count_january_devices =  omzet_activity_paid_count_january_devices[mask]

Upvotes: 1

Related Questions