Pandas 如何使用Pandas中的merge函数合并数据框

Pandas 如何使用Pandas中的merge函数合并数据框

在本文中,我们将介绍如何使用Pandas中的merge函数合并数据框。合并是数据分析中需要频繁使用的操作,通过合并多个数据框可以将它们的数据整合起来,方便对数据进行分析和处理。

阅读更多:Pandas 教程

merge函数概述

merge是Pandas中用于合并数据框的函数。它将两个数据框以某个共同的列为关键字进行合并,类似于SQL中的join操作。merge函数的基本语法如下:

merge(left, 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)
Python

参数说明:

  • left:要合并的左侧数据框。
  • right:要合并的右侧数据框。
  • how:合并方式,默认为‘inner’,其他可选项有‘outer’、‘left’、‘right’。
  • on:添加用于匹配的列名,如果左右数据框都有相同的列名,则可以使用on参数。
  • left_on:左侧数据框用于匹配的列名,如果两个数据框中的列名不同,则使用left_on参数。
  • right_on:右侧数据框用于匹配的列名。
  • left_index:使用左侧数据框的索引作为连接键。
  • right_index:使用右侧数据框的索引作为连接键。
  • sort:按照连接键对结果排序。
  • suffixes:连接左右数据框中重叠的列名时使用的字符串后缀,默认为(‘_x’, ‘_y’)。
  • copy:是否对合并的数据进行拷贝。
  • indicator:显示合并方式,默认为False。

merge的操作

接着我们来介绍一些常用merge的操作。

内连接

内连接(inner join)只保留两个数据框都有的行,相当于两个数据框的交集,用how=’inner’参数实现,示例如下:

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': np.random.randint(1, 10, 4)})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'], 'value': np.random.randint(1, 10, 4)})

res = pd.merge(df1, df2, on='key', how='inner')
print(res)
Python

输出结果如下:

  key  value_x  value_y
0   B        2        2
1   D        7        8
Python

左连接

左连接(left join)以左侧数据框为基础,保留左侧数据框的所有行,如果右侧数据框中没有匹配的行则用空值填充,用how=’left’参数实现,示例如下:

res = pd.merge(df1, df2, on='key', how='left')
print(res)
Python

输出结果如下:

  key  value_x  value_y
0   A        5      NaN
1   B        2      2.0
2   C        3      NaN
3   D        7      8.0
Python

右连接

右连接(right join)以右侧数据框为基础,保留右侧数据框的所有行,如果左侧数据框中没有匹配的行则用空值填充,用how=’right’参数实现,示例如下:

res = pd.merge(df1, df2, on='key', how='right')
print(res)
Python

输出结果如下:

  key  value_x  value_y
0   B      2.0        2
1   D      7.0        8
2   E      NaN        4
3   F      NaN        2
Python

外连接

外连接(outer join)保留左右数据框的所有行,如果没有匹配的行则用空值填充,用how=’outer’参数实现,示例如下:

res = pd.merge(df1, df2, on='key', how='outer')
print(res)
Python

输出结果如下:

  key  value_x  value_y
0   A      5.0      NaN
1   B      2.0      2.0
2   C      3.0      NaN
3   D      7.0      8.0
4   E      NaN      4.0
5   F      NaN      2.0
Python

多关键字合并

除了单个关键字合并外,merge函数还支持多个关键字合并,只需要将关键字名称组成一个列表传递给on参数即可,示例如下:

df3 = pd.DataFrame({'key1': ['A', 'B', 'C', 'D'], 'key2': ['E', 'F', 'G', 'H'], 'value': np.random.randint(1, 10, 4)})
df4 = pd.DataFrame({'key1': ['C', 'D', 'E', 'F'], 'key2': ['G', 'H', 'I', 'J'], 'value': np.random.randint(1, 10, 4)})

res = pd.merge(df3, df4, on=['key1', 'key2'], how='outer')
print(res)
Python

输出结果如下:

  key1 key2  value_x  value_y
0    A    E      3.0      NaN
1    B    F      8.0      NaN
2    C    G      7.0      5.0
3    D    H      5.0      1.0
4    E    I      NaN      4.0
5    F    J      NaN      4.0
Python

处理重复列名

如果左右两个数据框中存在相同列名,例如下面两个数据框:

df5 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value_left': np.random.randint(1, 10, 4)})
df6 = pd.DataFrame({'key': ['C', 'D', 'E', 'F'], 'value_right': np.random.randint(1, 10, 4)})
Python

在合并时,我们可以使用suffixes参数对重复列名添加后缀,示例如下:

res = pd.merge(df5, df6, on='key', how='outer', suffixes=('_left', '_right'))
print(res)
Python

输出结果如下:

  key  value_left  value_right
0   A         2.0          NaN
1   B         5.0          NaN
2   C         4.0          2.0
3   D         1.0          2.0
4   E         NaN          9.0
5   F         NaN          5.0
Python

使用索引合并

除了使用列名作为连接键外,merge函数还支持使用DataFrame的索引作为连接键。只需要将left_index和right_index参数设置为True即可,示例如下:

df7 = pd.DataFrame({'value1': np.random.randint(1, 10, 3), 'value2': np.random.randint(1, 10, 3)}, index=['A', 'B', 'C'])
df8 = pd.DataFrame({'value3': np.random.randint(1, 10, 3), 'value4': np.random.randint(1, 10, 3)}, index=['B', 'C', 'D'])

res = pd.merge(df7, df8, left_index=True, right_index=True, how='outer')
print(res)
Python

输出结果如下:

   value1  value2  value3  value4
A     3.0     2.0     NaN     NaN
B     4.0     2.0     7.0     8.0
C     5.0     6.0     2.0     6.0
D     NaN     NaN     6.0     3.0
Python

总结

本文介绍了Pandas中merge函数的基本用法及常见操作,通过实例演示了内连接、左连接、右连接、外连接、多关键字合并、处理重复列名和使用索引合并等操作。merge函数的强大功能提供了对数据框合并的便利支持,尤其在数据分析中,使用Pandas进行数据处理和分析时,经常需要将多个数据框进行合并。掌握merge函数的用法,将有助于提高处理数据的效率和准确性。同时,在实际操作中需要根据数据的特点和需求,选择合适的合并方式和连接键,避免出现不必要的错误和问题。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册