首先,INNER JOIN和LEFT SEMI JOIN都是数据关联操作,用于根据一个或多个指定的联接键连接两个或多个表或数据框。它们在连接操作的结果上是不同的,下面具体讲解。
- INNER JOIN
INNER JOIN是一种基本的联接方式,它只返回两个表中联接键相同的行。它返回的数据包括联接键在两个表中都有的行,即“内部完全匹配”。
例如,有两个数据框df1和df2,它们的结构如下所示:
df1:
key value1
0 A 1
1 B 2
2 C 3
df2:
key value2
0 A 10
1 D 20
2 E 30
如果我们对df1和df2进行INNER JOIN操作:
pd.merge(df1, df2, on='key', how='inner')
则返回的结果将只包含key在df1和df2中都存在的行,即:
key value1 value2
0 A 1 10
- LEFT SEMI JOIN
LEFT SEMI JOIN是一种只返回左表中有匹配行的联接方式。它的结果将只包含左表中存在的联接键的行,且没有右表相关的信息。
LEFT SEMI JOIN等价于LEFT JOIN操作,但是只选取右表中包含在联接键中的行,然后把结果集限制在左表中。
例如,仍然使用上述的df1和df2,通过LEFT SEMI JOIN操作:
pd.merge(df1, df2, on='key', how='left')
则返回的结果仅包括df1中存在的联接键A、B和C,右表中的D和E被排除,结果为:
key value1 value2
0 A 1 10
1 B 2 NaN
2 C 3 NaN
简单来讲,INNER JOIN返回的结果包含了两个表中完全匹配的行,而LEFT SEMI JOIN仅返回左表中存在的匹配行,右表中不存在的行被排除在外。
以上就是Python Pandas中INNER JOIN和LEFT SEMI JOIN的区别,希望能够帮助到您。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Pandas – INNER JOIN和LEFT SEMI JOIN的区别 - Python技术站