按id列表筛选数据帧

我有一个熊猫数据框,它有一个用户id的“订户id”和一些其他信息的列表

我只想选择不在给定列表a中的订户

因此,如果我们的数据帧包含订阅者[1,2,3,4,5]的信息,而我的排除列表是[2,4,5],那么我现在应该得到一个包含[1,3]信息的数据帧

我试过使用如下面具:

temp=df.mask(lambda x:x['subscriber\u id']不在订阅服务器中)

但是没有运气

我确信not in是有效的Python语法,因为我在下面的列表中测试了它:

c=[1,2,3,4,5]
如果5不在c中:
打印“耶”
&燃气轮机&燃气轮机;耶

有没有关于过滤数据帧的建议或替代方法

您可以使用isin方法:

[30]on

:df=pd.DataFrame({'subscriber_id':[1,2,3,4,5]})
In[31]:df
Output[31]:
用户识别码
0              1
1              2
2              3
3              4
4              5
[5行x 1列]
At[32]on:mask=df['subscriber_id'].isin([2,4,5])
At[33]on:掩码
Output[33]:
0错误
1正确
2错误
3正确
4正确
名称:订户id,数据类型:bool
In[34]:df.loc[~mask]
Output[34]:
用户识别码
0              1
2              3
[2行x 1列]

如果使用df.mask,则输入必须是布尔NDFrame或数组lambda x:x['subscriber_id']不在订阅服务器中是一个函数,这就是它引发异常的原因

这里有一种方法可以使用df.mask,再次使用isin来形成布尔条件:

[43]on

:df['subscriber\u id'].mask(df['subscriber\u id'].isin([2,4,5])。值)
Output[43]:
0     1
1楠
2     3
3南
4楠
名称:订户id,数据类型:float64

发表评论