查找不在pandas数据帧数据中的列表值

时间:2017-05-26 01:39:02

标签: python pandas

我有一个列表和pandas数据帧数据,如下所示:

user_id = [10, 15, 20, 25, 30, 32, 40, 45, 50]

user_id  value 
10        45 
20        49 
25        19'
30        58
32        48 

我试图在列表中找不到user_id列表。 我想要的结果是

result = [15, 40, 45, 50] 

获得理想结果的最简单方法是什么? (目前我通过for循环得到了结果)

谢谢。

3 个答案:

答案 0 :(得分:3)

使用设定操作:

list(set(user_id)-set(df.user_id))
Out[84]: [40, 50, 45, 15]

答案 1 :(得分:2)

您可以使用Series.isin()进行否定(~)。

df[~df["user_id"].isin(set(user_id))]

转换为 set 始终是首选,因为您的运行时间会更长。

答案 2 :(得分:1)

您只需将user_id列更改为列表,然后使用list comprehension查找原始列表中不在其他列表中的列表。

user_id = [10, 15, 20, 25, 30, 32, 40, 45, 50]
df = pd.DataFrame({'user_id': [10, 20, 25, 30, 32], 'value': [45, 49, 19, 58, 48]}
df_user_id = df['user_id'].tolist()
result = [x for x in user_id if x not in df_user_id]

[15, 40, 45, 50]