📅  最后修改于: 2020-10-29 02:04:22             🧑  作者: Mango
当我们想要串联我们的DataFrame时,我们可以通过垂直或并排堆叠它们来相互添加。组合这些DataFrame的另一种方法是在每个数据集中使用包含公用值的列。使用公共字段组合DataFrame的方法称为“连接”。我们用于组合DataFrame的方法是join()方法。包含公共值的列称为“连接键”。
当一个DataFrame是一个查找表,其中包含添加到另一个DataFrame中的其他数据时,join()方法通常很有用。这是一种方便的方法,可以将两个索引不同的DataFrame的列合并为一个DataFrame。
为了确定适当的连接键,首先,我们必须定义在DataFrame之间共享的必填字段。这两个DataFrame都由名称相同且包含相同数据的列组成。
内部联接可以定义为最常用的联接。基本上,其主要任务是基于连接键将两个DataFrame组合在一起并返回一个新的DataFrame。返回的DataFrame仅包含两个原始DataFrame中具有匹配值的选定行。
如果我们想在不丢失任何数据的情况下向DataFrame中添加一些信息,我们可以简单地通过称为“左外部连接”或“左连接”的另一种类型的连接来做到这一点。
像内部联接一样,左联接也使用联接键来组合两个DataFrame,但是与内部联接不同,它返回左侧DataFrame的所有行,即使那些联接键不包括右侧DataFrame中值的行也是如此。
DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
其他:指的是DataFrame或Series。
在这种情况下,索引应类似于列之一。如果传递了Series,则必须设置named属性,以将其用作结果联接的DataFrame中的列名。
on:这是一个可选参数,它引用类似数组或str的值。
它引用调用方中要加入索引的列或索引级别名称。否则,它将加入索引索引。如果存在多个值,则另一个DataFrame必须具有MultiIndex。就像Excel VLOOKUP操作一样,如果调用的DataFrame中尚未包含数组,则可以将其作为连接键传递。
方法:指的是“左”,“右”,“外”,“内”值,主要用于如何处理两个对象的操作。默认值为how。
lsuffix:它是指具有默认值“”的字符串对象。它使用左框架重叠列中的后缀。
rsuffix:它是指一个字符串值,其默认值为“”。它使用右框架重叠列中的后缀。
sort:由一个布尔值组成,该布尔值通过join键按字典顺序对结果DataFrame进行排序。如果我们传递False值,则联接键的顺序主要取决于联接类型,即方式。
示例:下面的示例演示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:下面的示例将两个MultiIndex连接在一起:
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