简体   繁体   English

熊猫过滤(~isin)不起作用

[英]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?上面的代码不起作用,输出仍然像我原来的数据框,我错过了什么?

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:因此将列No转换为字符串:

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 string s from list to int s:或者将string s 从 list 更改为int s:

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]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM