Pandas 中的连接和合并有什么区别

作者:编程家 分类: pandas 时间:2025-04-04

在Pandas中,连接(join)和合并(merge)是两种常用的数据操作方法。尽管它们的目的都是将不同的数据集合并在一起,但连接和合并在实际应用中有着不同的使用场景和方法。

连接(join):

连接是指将两个或多个数据表按照某个指定的键(key)进行匹配,并将它们的行合并在一起。连接操作通常适用于具有相同或相似列的数据表,通过共享的键将它们连接在一起。连接操作可以按照不同的方式进行,包括内连接(inner join)、外连接(outer join)、左连接(left join)和右连接(right join)等。

内连接是指只保留两个数据表中共同满足某个条件的行,其他不满足条件的行将被丢弃。外连接是指保留两个数据表中所有的行,不满足条件的行以NaN值填充。左连接是指保留左边数据表的所有行,右连接是指保留右边数据表的所有行。连接操作可以通过Pandas中的`join()`函数来实现。

合并(merge):

合并是指将两个或多个数据表按照某个指定的键(key)进行匹配,并将它们的列合并在一起。合并操作通常适用于具有相同或相似行的数据表,通过共享的键将它们合并在一起。合并操作可以按照不同的方式进行,包括内合并(inner merge)、外合并(outer merge)、左合并(left merge)和右合并(right merge)等。

内合并是指只保留两个数据表中共同满足某个条件的列,其他不满足条件的列将被丢弃。外合并是指保留两个数据表中所有的列,不满足条件的列以NaN值填充。左合并是指保留左边数据表的所有列,右合并是指保留右边数据表的所有列。合并操作可以通过Pandas中的`merge()`函数来实现。

案例代码:

首先,我们创建两个示例数据表data1和data2:

python

import pandas as pd

# 创建示例数据表data1

data1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],

'value1': [1, 2, 3, 4]})

# 创建示例数据表data2

data2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],

'value2': [5, 6, 7, 8]})

接下来,我们使用连接和合并操作将这两个数据表合并在一起:

python

# 使用连接操作将data1和data2连接在一起

join_result = data1.join(data2.set_index('key'), on='key')

# 使用合并操作将data1和data2合并在一起

merge_result = pd.merge(data1, data2, on='key')

最后,我们可以打印连接和合并的结果,观察它们的区别:

python

print("连接结果:")

print(join_result)

print("合并结果:")

print(merge_result)

输出结果如下:

连接结果:

key value1 value2

0 A 1 NaN

1 B 2 5.0

2 C 3 NaN

3 D 4 6.0

合并结果:

key value1 value2

0 B 2 5

1 D 4 6

从结果可以看出,连接操作保留了data1和data2两个数据表的所有行,并在连接的列上进行了匹配。而合并操作只保留了data1和data2两个数据表中共同满足条件的行,并将它们的列合并在一起。