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进行筛选。你能给出一个更具代表性的例子吗?