当我们想要连接我们的数据框时,我们可以通过堆叠它们来将它们添加在一起,要么垂直堆叠,要么水平堆叠。另一种组合这些数据框的方法是使用每个数据集中包含共同值的列。使用共同字段组合DataFrame的方法称为"连接"。我们用于合并DataFrame的方法是join()方法。包含共同值的列被称为"连接键"

join()方法通常在一个DataFrame是包含在另一个DataFrame中的查找表时非常有用。它是一种方便的方法,可以将两个具有不同索引的DataFrame的列组合成一个单独的DataFrame。

确定连接键

要确定适当的连接键,首先必须定义在DataFrame之间共享的所需字段。两个DataFrame都包含具有相同名称并且还包含相同数据的列。

内连接

内连接可以定义为最常用的连接。基本上,它的主要任务是基于连接键组合两个DataFrame,并返回一个新的DataFrame。返回的DataFrame仅包含在原始DataFrame中的两个DataFrame中具有匹配值的选定行。

左连接

如果我们想要在不丢失任何数据的情况下将一些信息添加到DataFrame中,我们可以通过一种称为"左外连接""左连接"的不同类型的连接来简单地实现。

与内连接类似,左连接还使用连接键将两个DataFrame组合在一起,但与内连接不同,它返回来自左DataFrame的所有行,即使这些行的连接键不包括在右DataFrame的值中。

语法:

DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)  

参数:

other: 它是DataFrame或Series。

在这种情况下,索引应与其中一个列的名称相似。如果我们传递一个Series,则必须设置命名属性,以便将其用作结果连接的DataFrame中的列名。

on: 它是可选参数,引用array-likestr值。

它是调用者上要加入的列或索引级别名称。否则,它会在索引上进行连接。如果存在多个值,则other DataFrame必须具有MultiIndex。这类似于Excel的VLOOKUP操作,如果它尚未包含在调用DataFrame中,则可以将数组作为连接键传递。

how: 它是指 'left'、'right'、'outer'、'inner' 值,主要用于处理两个对象的操作方式。how的默认值是left

  • left: 如果指定了参数on,则使用调用框架的索引或列。
  • right: 使用其他索引。
  • outer: 用于使用参数on指定的调用框架的索引或列与其他索引形成联合,并对其进行字典排序。
  • inner: 用于使用参数on指定的调用框架的索引或列与其他索引形成交集。因此,由于这一点,它保留了调用对象的顺序。

lsuffix: 它是一个字符串对象,默认值为''。它使用左帧重叠列的后缀。

rsuffix: 它是一个字符串值,默认值为''。它使用右帧重叠列的后缀。

sort: 它由一个布尔值组成,将结果DataFrame按连接键字典顺序进行排序。如果传递False值,那么连接键的顺序主要取决于连接类型,即how

示例: 下面的示例显示了join()函数的工作方式。

import pandas as pd  
info = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3', 'K4', 'K5'],  
'A': ['A0', 'A1', 'A2', 'A3', 'A4', 'A5']})  
x = pd.DataFrame({'key': ['K0', 'K1', 'K2'],  
'B': ['B0', 'B1', 'B2']})  
info.join(x, lsuffix='_caller', rsuffix='_x')   
info.set_index('key').join(x.set_index('key'))  
info.join(x.set_index('key'), on='key')  

输出:

    key  A   B
0   K0   A0  B0
1   K1   A1  B1
2   K2   A2  B2
3   K3   A3  NaN
4   K4   A4  NaN
5   K5   A5  NaN

示例2: 下面的示例连接了两个MultiIndexes:

import pandas as pd  
leftindex = pd.MultiIndex.from_product([list('xyz'), list('pq'), [1, 2]],  
                                      names=['xyz', 'pq', 'num'])  
left = pd.DataFrame({'value': range(12)}, index=leftindex)  
left  

输出:

            value
xyz    pq    num    
x    p    1    0
2    1
q    1    2
2    3
y    p    1    4
2    5
q    1    6
2    7
z    p    1    8
2    9
q    1    10
2    11

标签: Pandas, Pandas教程, Pandas库, Pandas基础, Pandas学习, Pandas使用, Pandas指南, Pandas入门教程, Pandas模块, Pandas数据库, Pandas实战教程, Pandas用法总结, Pandas文档