1. 简介
pandas.merge()
是 pandas
库中用于合并两个 DataFrame 的函数,类似于 SQL 中的 JOIN
操作。它可以根据一个或多个键将不同的 DataFrame 合并在一起,适用于数据分析中的数据整合与清洗工作。
2. 基本语法
pandas.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, validate=None)
3. 参数详解
left
:左侧的 DataFrame。right
:右侧的 DataFrame。how
:合并方式,默认为 ‘inner’,可以选择:
'left'
:左连接,保留左表的所有记录。'right'
:右连接,保留右表的所有记录。'outer'
:全外连接,保留左右表的所有记录。'inner'
:内连接,仅保留左右表的交集部分。
on
:用于合并的列名列表。如果两个 DataFrame 中有相同的列名,可以使用该参数。left_on
:左侧 DataFrame 中用于合并的列名。right_on
:右侧 DataFrame 中用于合并的列名。left_index
:如果为 True
,则使用左侧 DataFrame 的索引进行合并。right_index
:如果为 True
,则使用右侧 DataFrame 的索引进行合并。sort
:是否对合并后的数据进行排序,默认为 False
。suffixes
:列名冲突时添加的后缀,默认为 ('_x', '_y')
。copy
:默认为 True
,表示合并时复制数据。indicator
:如果为 True
,会在结果中添加一列 _merge
,指示行来源于左表、右表还是两者都有。validate
:如果为 True
,检查合并的唯一性(‘one_to_one’, ‘one_to_many’, ‘many_to_one’, ‘many_to_many’)。
4. 常见用法示例
4.1 根据单个键合并
result = pd.merge(df1, df2, on='key')
- 作用:合并两个 DataFrame,使用
key
列作为键。默认为内连接,保留两个 DataFrame 中 key
列匹配的行。
4.2 左连接
result = pd.merge(df1, df2, how='left', on='key')
- 作用:保留左侧 DataFrame 中的所有行,如果右侧 DataFrame 中没有匹配项,则结果中对应的列填充
NaN
。
4.3 右连接
result = pd.merge(df1, df2, how='right', on='key')
- 作用:保留右侧 DataFrame 中的所有行,如果左侧 DataFrame 中没有匹配项,则结果中对应的列填充
NaN
。
4.4 全外连接
result = pd.merge(df1, df2, how='outer', on='key')
- 作用:保留两个 DataFrame 中的所有行,没有匹配的地方填充
NaN
。
4.5 根据多个键合并
result = pd.merge(df1, df2, on=['key1', 'key2'])
- 作用:根据多个键列进行合并,只有在
key1
和 key2
都匹配的情况下,行才会出现在合并结果中。
4.6 使用索引合并
result = pd.merge(df1, df2, left_index=True, right_index=True, how='outer')
- 作用:使用 DataFrame 的索引进行合并。可以用于处理无明确主键的合并。
4.7 处理列名冲突
result = pd.merge(df1, df2, on='key', suffixes=('_left', '_right'))
4.8 指示行的来源
result = pd.merge(df1, df2, on='key', how='outer', indicator=True)
- 作用:在结果中添加一列
_merge
,指示每行是来自左表、右表还是两者都有。
5. 总结
merge
用于合并两个 DataFrame,通过多种方式(内连接、外连接、左连接、右连接等)进行数据合并。- 通过调整参数如
how
, on
, left_on
, right_on
, suffixes
, indicator