2017-05-26 167 views
0

我有一个看起来像这样的列表和熊猫据帧数据:查找列表值不是大熊猫数据帧数据

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] 

什么是获得所需结果的最简单的方法? (目前我已经得到了〜循环的结果)

谢谢。

+0

你到目前为止尝试过什么?你得到了什么,它与你想要的有什么不同? –

回答

3

使用一组操作:

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

不错,我正在尝试与十字路口,但这是更简单:) – Vaishali

1

你可以改变user_id列的列表,然后使用列表理解地发现,在你原来的列表中未于其他列表中的人。

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] 
1

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

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

转换为设置始终是最好的,你会更好的运行时间。