使用 isin 函数过滤 pandas [英] pandas filtering using isin function

查看:49
本文介绍了使用 isin 函数过滤 pandas 的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个数据框,如下所示df1:

I have two dataframe as shown below df1:

ID      Name
1       Sachin
2       Kholi
3       Dravid

df2:

ID      Run
1       20
2       60
2       10
1       5

从上面我想通过只在 df2 中获取唯一的 id 来过滤 df1:

From the above I want to filter df1 by only taking unique ids in df2:

预期输出:

ID      Name
3       Dravid

我试过下面的代码

def diff(first, second):
        second = set(second)
        units_in_unit_table = [item for item in first if item not in second]
        return units_in_unit_table
id_df2 = diff(df2, df1)

df3 = df1[df1['ID'].isin(id_df2)]

推荐答案

看来您的解决方案应该通过 Series.unique 带有 的反转掩码~:

It seems your solution should be simplify by pass unique values to isin by Series.unique with invert mask by ~:

df3 = df1[~df1['ID'].isin(df2['ID'].unique())]

或者通过set:

df3 = df1[~df1['ID'].isin(set(df2['ID']))]

<小时>

print (df3)
   ID    Name
2   3  Dravid

这篇关于使用 isin 函数过滤 pandas 的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆