将.isin应用于DF中的多个序列

时间:2019-02-16 03:39:03

标签: python pandas dataframe

我有三个字段TEL1,TEL2,TEL3,我想查看它们是否在另一个DF中存在值。我一次只能写一列,但想知道是否有一种快速的方法可以隐藏行(如果三个字段中的任何一个在查找数据框中包含一个值)。

我当前正在使用:

df1 = Sample['TEL1'].isin(DNC['NUMBER'])

我要查找的数据框:

    NUMBER
0   555

我正在查找的数据框:

    TEL1 TEL2 TEL3 NAME
0   222  555  555  BEN
1   222  555  222  BEN
2   555  222  555  BEN
3   222  222  222  BEN
4   555  555  555  BEN

预期结果(TEL1-TEL3列中不包含555的行):

    TEL1 TEL2 TEL3 NAME
3   222  222  222  BEN

Ben,谢谢你。

1 个答案:

答案 0 :(得分:1)

您可以在整个数据框(或您感兴趣的列)上使用isin,然后检查哪些行全部是False(即 not 具有< em> any )。

ix = ~df.loc[:, 'TEL1':'TEL3'].isin(DNC['NUMBER'].values).any(axis=1)
df.loc[ix]

注意,我使用了DNC['NUMBER']的值,因为否则它将尝试匹配索引。因此,如果将其保留为系列,它将在索引为555的数据框中寻找0