Python 是否过滤掉数据帧中A列或B列上不存在的数字?

Python 是否过滤掉数据帧中A列或B列上不存在的数字?,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧df1具有以下格式 deva devb c 1 3 5 dev 1 3 而df2具有以下形式 deva devb c 1 3 5 dev 1 3 现在,我想加入这两个数据帧,以便只获取deva或devb中出现在dev中的数字。换句话说,我想过滤掉不在df2中的数字。我尝试了以下方法,但没有效果: df1 = df2.merge(df1, left_on=["dev", "dev"], right_on=["deva","dev

我有两个数据帧
df1
具有以下格式

deva devb  c
   1    3  5
dev
  1
  3
df2
具有以下形式

deva devb  c
   1    3  5
dev
  1
  3
现在,我想加入这两个数据帧,以便只获取
deva
devb
中出现在
dev
中的数字。换句话说,我想过滤掉不在
df2
中的数字。我尝试了以下方法,但没有效果:

df1 = df2.merge(df1, left_on=["dev", "dev"], right_on=["deva","devb"])
如何使用两个不同列的“或”连接/合并?

使用+:

使用+:


使用isin检查
isin
+
any

df1[df1[['deva','devb']].isin(df2.dev.tolist()).any(1)]
Out[76]: 
   deva  devb  c
0     1     3  5

使用isin检查
isin
+
any

df1[df1[['deva','devb']].isin(df2.dev.tolist()).any(1)]
Out[76]: 
   deva  devb  c
0     1     3  5

没有合并的一种方法是在
df1
中创建一个名为
drop
的新列。然后执行df1.apply(),检查deva或deb中是否有人在df2的dev中。如果是,则将
drop
列设置为true,否则设置为false。然后在此新列上按true和false进行筛选。您能展示一个更具代表性的示例吗?不合并的一种方法是在
df1
中创建一个名为
drop
的新列。然后执行df1.apply(),检查deva或deb中是否有人在df2的dev中。如果是,则将
drop
列设置为true,否则设置为false。然后在这个新列上按true和false进行筛选。你能给出一个更具代表性的例子吗?