我有三个字段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,谢谢你。
答案 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
。