DataFrame.join函数

DataFrame.join函数 首页 / Pandas入门教程 / DataFrame.join函数

当我们想要串联我们的DataFrame时,我们可以通过垂直或并排堆叠它们来相互添加。组合这些DataFrame的另一种方法是在每个数据集中使用包含公用值的列。使用公共字段组合DataFrame的方法称为" join"。我们用于组合DataFrame的方法是 join()方法。包含公用值的列称为" join key"

当一个DataFrame是一个查找表,其中包含添加到另一个DataFrame中的其他数据时,join()方法通常很有用。这是一种方便的方法,可以将两个索引不同的DataFrame的列合并为一个DataFrame。

为了确定适当的连接键(join keys),首先,我们必须定义在DataFrame之间共享的必填字段。这两个DataFrame都由名称相同且包含相同数据的列组成。

join - Inner joins

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

join - Left joins

如果我们想在DataFrame中添加一些信息而不丢失任何数据,我们可以简单地通过称为" left outer join"或" left join"。

像内部联接(inner join)一样,左联接也使用联接键来组合两个DataFrame,但是与内部联接不同的是,左联接返回左DataFrame的所有行,即使那些联接键不包括右DataFrame中值的行也是如此。

join - 语法

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

join - 参数

other     -  它是指DataFrame或Series。

在这种情况下,索引应类似于列之一。如果传递了Series,则必须设置named属性,以将其用作结果联接的DataFrame中的列名。

on           - 是一个可选参数,用于引用类似数组(array-like) str 的值。

how        - 它是指" left"," right"," outer"," inner"值,主要用于处理两个对象的操作。 how的默认值是left

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

lsuffix   -  它是指具有默认值""的字符串对象。它使用左框架重叠列中的后缀。

rsuffix - 它是一个字符串值,其默认值为""。它使用右框架重叠列中的后缀。

sort       -  它由一个布尔值组成,该布尔值按连接键按字典顺序对结果DataFrame进行排序。如果我们传递False值,则联接键的顺序主要取决于联接类型,即how

示例1:下面的示例演示 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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

持续交付36讲 -〔王潇俊〕

程序员进阶攻略 -〔胡峰〕

Flutter核心技术与实战 -〔陈航〕

编辑训练营 -〔总编室〕

Electron开发实战 -〔邓耀龙〕

接口测试入门课 -〔陈磊〕

代码之丑 -〔郑晔〕

云原生架构与GitOps实战 -〔王炜〕

结构思考力 · 透过结构看问题解决 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)