如何在Pandas 'e 中通过逻辑运算OR对多个字段的表进行内部联合?就像SQL中的表达式中的条件?该功能允许您只获得几个字段的完全匹配(即逻辑与操作)。ON
JOIN
merge
例子。有dataframedf1
和df2
,它们有两个共同的字段A
和B
,需要根据条件合并df1.A = df2.A OR df1.B = df2.B
表中的信息df1
被认为具有较高的优先级,即如果匹配只出现在一个字段(A
或B
)中,那么第二个的值取自df1
。
df1:
# A B C
0 104 peter 28
1 228 andre 10
2 89 paul 17
3 219 saul 14
df2:
# A B
0 104 jessy
1 230 andre
2 219 saul
3 126 amy
结果:
# A B C
0 104 peter 28
1 228 andre 10
2 219 saul 14
对于简单的过滤,有一个更简单的解决方案:
或者
不幸的是,Pandas 没有用于此类操作的内置功能。为了得到想要的结果,我们需要根据想要的参数对dataframes进行独立的合并,然后把表格变成单一的格式,去掉重复,合并成最终的表格:
(*) 关于重复。按字段 A 合并数据帧会给出 A 相等的两个表共有的行,它们还包括 A 和 B 相等的行。类似地,由 B 合并将给出具有公共 A 和 B 的行。因此,连接这两个表将给出重复rows ,其中 A 和 B 相等。因此,在第二个表中进行过滤,结果只保留具有相等 B 而不是 A 的行,并且结果表具有三个必要组合的副本: