Pandas merge函数(merge函数用法python)30

作者 : 慕源网 本文共4285个字,预计阅读时间需要11分钟 发布时间: 2021-12-7 共177人阅读

Pandas merge函数(merge函数用法python)30

Pandas merge函数

根据业务需要,可能需要通过几个条件将两个dataframe 连接在一起。这个过程可以通过两种方式在 Pandas  dataframe 中实现,一种是通过 join() 方法,另一种是通过 merge() 方法。因此,为了获得与数据库相关的所有连接技术,可以使用 merge() 方法。除了合并方法,这些连接技术也可以通过 pandas 中的 join() 方法来实现。

本文是Python Pandas教程系列的一部分,您可以点击Python Pandas使用教程查看所有。

语法和参数

pandas dataframe.merge() 的语法如下:

DataFrame.merge(self, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None) 
参数: right : DataFrame或命名的Series

要合并的对象。

how{‘left’, ‘right’, ‘outer’, ‘inner’}, 默认 ‘inner’

要执行的合并类型。

1) left:仅使用左框架中的键,

类似于SQL左外部联接;保留关键顺序

2) right:仅使用右框架中的键,

类似于SQL右外部联接;保留关键顺序

3) outer:使用两个框架中键的并集,

类似于SQL完全外部联接;按字典顺序排序键

4) inner:使用两个框架中关键点的交集,

类似于SQL内部联接;保留左键的顺序

on:label或list

要加入的列或索引级别名称。

这些必须在两个DataFrame中都可以找到。

如果on为None且未在索引上合并,

则默认为两个DataFrame中列的交集。

left_onlabellist,或类似数组

要在左侧DataFrame中加入的列或索引级别名称。

也可以是左侧DataFrame长度的数组或数组列表。

这些数组被视为列。

right_on:标签或列表,或类似数组

要在右侧DataFrame中加入的列或索引级别名称。

也可以是正确DataFrame长度的数组或数组列表。

这些数组被视为列。

left_index:布尔值,默认为False

使用左侧DataFrame中的索引作为连接键。

如果它是MultiIndex,

则另一个DataFrame中的键数(索引或列数)

必须与级别数匹配

right_index:布尔值,默认为False

使用右侧DataFrame中的索引作为连接键。

与left_index相同的警告

sort:布尔值,默认为False

在结果DataFrame中按字典顺序对联接键进行排序。

如果为False,则联接键的顺序取决于联接类型(how关键字)

suffixes:2个长度的序列(元组,列表等)

suffixes分别应用于左侧和右侧的重叠列名

copy:布尔值,默认为True

如果为False,请勿不必要地复制数据

indicator:布尔值或字符串,默认为False

如果为True,则在输出DataFrame中添加一列,

称为“_merge”,其中包含有关每一行源的信息。

如果为字符串,则将在每一行的源上带有信息的列,

添加到输出DataFrame中,

并将该列命名为字符串的值。信息列是分类类型的,

对于其合并键仅出现在'left'DataFrame中的观测值,

其值为“left_only”;对于其合并键仅出现在'right'

DataFrame中的观测值,其值为“right_only”

如果两者中都存在观察值的合并键。

validate:字符串,默认为None

如果指定,则检查合并是否为指定的类型。

“one_to_one”“1:1”:检查合并键在左右数据集中是否唯一。

“one_to_many”或“1:m”:检查合并键在左数据集中是否唯一。

“many_to_one”“m:1”:检查合并键在正确的数据集中是否唯一。

“many_to_many”“m:m”:允许,但不进行检查。

0.21.0版中的新功能。

返回值 DataFrame

如果输出类型是DataFrame的子类,

则其输出类型将与“left”相同。

Pandas DataFrame.merge() 示例

以下是 Pandas DataFrame.merge() 的示例:

示例 #1 –Inner Join

代码:

import pandas as pd
left_dataframe = pd.DataFrame({'key':['Key_0','Key_1','Key_4','Key_7'],
'B':[145,2373,415,2946]})
right_dataframe = pd.DataFrame({'key': ['Key_0', 'Key_1', 'Key_2', 'Key_3', 'Key_4', 'Key_5'],
'A': ['113', '2342', '4567', '2563', '2234', '71218'],
'B': ['991.03', '993.13', '983.12', '936.45', '995.44', '999.99']})
print(" THE LEFT DATAFRAME ")
print(left_dataframe )
print("")
print(" THE RIGHT DATAFRAME ")
print(right_dataframe )
print("")
print(" THE INNER JOIN ")
print(pd.merge(left_dataframe ,right_dataframe ,on=['key','key']))

输出:

Pandas merge函数(merge函数用法python)30

代码说明:这里声明了两个不同的dataframe ,一个表示左边的dataframe ,另一个表示右边的dataframe 。这些dataframe 是在声明本身期间用值制定的。使用 merge() 方法对这些dataframe 完成内部连接,并将结果dataframe 打印到控制台上。

示例 #2 –Left Join

代码:

import pandas as pd
left_dataframe  = pd.DataFrame({'key':['Key_0','Key_1','Key_4','Key_7'],
'B':[145,2373,415,2946]})
right_dataframe  = pd.DataFrame({'key': ['Key_0', 'Key_1', 'Key_2', 'Key_3', 'Key_4', 'Key_5'],
'A': ['113', '2342', '4567', '2563', '2234', '71218'],
'B': ['991.03', '993.13', '983.12', '936.45', '995.44', '999.99']})
print(" THE LEFT DATAFRAME ")
print(left_dataframe )
print("")
print(" THE RIGHT DATAFRAME ")
print(right_dataframe )
print("")
print(" LEFT JOIN ")
print(pd.merge(left_dataframe ,right_dataframe ,on=['key','key'],how='left'))

输出:

Pandas merge函数(merge函数用法python)30

代码说明:这里声明了两个不同的dataframe ,一个表示左边的dataframe ,另一个表示右边的dataframe 。这些dataframe 是在声明本身期间用值制定的。使用 merge() 方法对这些dataframe 完成左连接,并将结果dataframe 打印到控制台上。

示例 #3 –Right Join

代码:

import pandas as pd
left_dataframe  = pd.DataFrame({'key':['Key_0','Key_1','Key_4','Key_7'],
'B':[145,2373,415,2946]})
right_dataframe  = pd.DataFrame({'key': ['Key_0', 'Key_1', 'Key_2', 'Key_3', 'Key_4', 'Key_5'],
'A': ['113', '2342', '4567', '2563', '2234', '71218'],
'B': ['991.03', '993.13', '983.12', '936.45', '995.44', '999.99']})
print(" THE LEFT DATAFRAME ")
print(left_dataframe )
print("")
print(" THE RIGHT DATAFRAME ")
print(right_dataframe )
print("")
print(" RIGHT JOIN ")
print(pd.merge(left_dataframe ,right_dataframe ,on=['key','key'],how='right'))

输出:

Pandas merge函数(merge函数用法python)30

示例 #4 –Outer Join

代码:

import pandas as pd
left_dataframe  = pd.DataFrame({'key':['Key_0','Key_1','Key_4','Key_7'],
'B':[145,2373,415,2946]})
right_dataframe  = pd.DataFrame({'key': ['Key_0', 'Key_1', 'Key_2', 'Key_3', 'Key_4', 'Key_5'],
'A': ['113', '2342', '4567', '2563', '2234', '71218'],
'B': ['991.03', '993.13', '983.12', '936.45', '995.44', '999.99']})
print(" THE LEFT DATAFRAME ")
print(left_dataframe )
print("")
print(" THE RIGHT DATAFRAME ")
print(right_dataframe )
print("")
print(" OUTER JOIN ")
print(pd.merge(left_dataframe ,right_dataframe ,on=['key','key'],how='outer'))

输出:

Pandas merge函数(merge函数用法python)30

总结

这是 Pandas DataFrame.merge() 的指南。在这里,我们还将讨论 pandas dataframe.merge() 的语法和参数以及不同的示例及其代码实现。


慕源网 » Pandas merge函数(merge函数用法python)30

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录