首页 > 解决方案 > 使用 isin 函数进行熊猫过滤

问题描述

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

ID      Name
1       Sachin
2       Kholi
3       Dravid

df2:

ID      Run
1       20
2       60
2       10
1       5

从上面我想通过仅在 df2 中获取唯一 ID 来过滤 df1:

预期输出:

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

标签: pandaspandas-groupby

解决方案


看来您的解决方案应该通过将唯一值传递给isinbySeries.unique与反转掩码 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

推荐阅读