Pandas中join和merge的区别是什么

Pandas中join和merge的区别是什么

Pandas提供了各种设施,可以轻松地将Series或DataFrame与各种索引的集合逻辑和连接/合并类型的操作中的关系代数功能结合起来。

连接和合并都可以用来合并两个数据框架,但是连接方法是根据两个数据框架的索引来合并的,而合并方法则更加灵活,允许我们在索引旁边指定两个数据框架的连接列。

让我们首先创建两个数据框来展示这两种方法的效果。

import pandas as pd
 
# Creating the two dataframes
left = pd.DataFrame([['a', 1], ['b', 2]], list('XY'), list('PQ'))
right = pd.DataFrame([['c', 3], ['d', 4]], list('XY'), list('PR'))
Python

输出:

Pandas中join和merge的区别是什么?

现在让我们逐一看看这两种方法对数据帧的影响。

join

连接方法需要两个数据框架并在它们的索引上进行连接(技术上,你可以为左边的数据框架选择要连接的列)。如果有重叠的列,连接将希望你在左边数据框架的重叠列名上添加一个后缀。我们的两个数据框架确实有一个重叠的列名P。

示例 :

joined_df = left.join(right, lsuffix='_')
print(joined_df)
Python

输出 :

Pandas中join和merge的区别是什么?

注意索引被保留了,我们有四列。我们也可以用参数_on _单独指定左边数据框架的一个特定列作为连接键,但它仍然会使用右边的索引。

示例 :

joined_df2 = left.reset_index().join(right, on='index', lsuffix='_')
print(joined_df2)
Python

输出 :

Pandas中join和merge的区别是什么?

merge

在基本层面上,合并或多或少地做了与连接相同的事情。这两种方法都是用来将两个数据框架结合在一起,但是merge的功能更多,它需要指定列作为合并键。我们可以用参数_on, _指定重叠的列,也可以用_left_on _和_right_on _参数分别指定。

示例 :

merged_df = left.merge(right, on='P', how='outer')
print(merged_df)
Python

输出 :

Pandas中join和merge的区别是什么?

在这里,注意到合并方法破坏了索引。

我们可以用_left_index _或_right_index _参数明确指定我们是根据索引来合并的。

示例 :

merged_df = left.merge(right, left_index=True,
                       right_index=True, suffixes=['_', ''])
print(merged_df)
Python

输出 :

Pandas中join和merge的区别是什么?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册