pandas.DataFrame.merge()
是一种用于将两个或多个数据框(pandas DataFrame)中的行(row)或列(column)按照一定的规则合并(combine)起来的函数。下面我们详细讲解这个函数的作用与使用方法。
作用
pandas.DataFrame.merge()
函数主要用于以下情况:
- 结合两个或多个数据帧中的重复列。
- 结合两个或多个数据帧中的非重复列。
- 合并两个或多个数据帧中的行。
- 按照给定的索引合并两个或多个数据帧。
使用方法
pandas.DataFrame.merge()
的基本语法如下:
DataFrame.merge(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
:一个数据帧,表示用于合并的第二个数据帧。how
:指定合并方式,可选的取值有:'inner'
,'outer'
,'left'
和'right'
。默认为'inner'
,表示保留两个数据帧的交集,其余的取值(例如:'outer'
)表示保留两个数据帧的并集。on
:指定用于合并的列名,可选参数。默认为None
,表示以两个数据帧的共同列进行合并,如果两个数据帧没有共同列,则会抛出异常。如果指定了on
参数,则以指定列名进行合并,必须存在于两个数据帧的列中。left_on
、right_on
:分别指定第一个数据帧和第二个数据帧用于合并的列名。left_index
、right_index
:分别指定是否以第一个数据帧和第二个数据帧的索引(Index)进行合并,默认为False
。suffixes
:指定列名后缀字符串的元组,以区分在两个数据帧中存在同名列时的列名。默认为('_x', '_y')
,例如,如果有一个名为name
的列,数据帧中两个表都存在,则合并后的列将分别被重命名为name_x
和name_y
。
下面给出两个使用实例:
实例一:合并两个数据帧
import pandas as pd
# 创建第一个数据帧
df1 = pd.DataFrame({'id': [1, 2, 3], 'name': ['A', 'B', 'C'], 'age':[20, 22, 24]})
# 创建第二个数据帧
df2 = pd.DataFrame({'id': [1, 2, 4], 'address': ['Beijing', 'Shanghai', 'Guangzhou'], 'salary':[10000, 12000, 15000]})
# 使用id列合并两个数据帧
result = pd.merge(df1, df2, on='id', how='outer')
print(result)
输出结果如下:
id name age address salary
0 1 A 20 Beijing 10000.0
1 2 B 22 Shanghai 12000.0
2 3 C 24 NaN NaN
3 4 NaN NaN Guangzhou 15000.0
实例二:使用多列合并
# 创建第一个数据帧
df1 = pd.DataFrame({'id': [1, 2, 3], 'name': ['A', 'B', 'C'], 'city':['Beijing', 'Shanghai', 'Guangzhou']})
# 创建第二个数据帧
df2 = pd.DataFrame({'id': [1, 2, 4], 'city': ['Beijing', 'Shanghai', 'Guilin'], 'salary':[10000, 12000, 15000]})
# 使用id和city两列合并两个数据帧
result = pd.merge(df1, df2, how='outer', on=['id', 'city'])
print(result)
输出结果如下:
id name city salary
0 1 A Beijing 10000.0
1 2 B Shanghai 12000.0
2 3 C Guangzhou NaN
3 4 NaN Guilin 15000.0