pandas中merge()函数的用法解读
什么是merge?
merge函数是pandas库中常用的数据合并函数,它可以根据一个或多个键(列名)将不同数据集中的行连接起来。merge操作类似于SQL中的join操作。
merge()函数的语法
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)
-
left
,左侧合并的DataFrame。 -
right
,右侧合并的DataFrame。 -
how
,合并方式。有inner、outer、left、right四种情况可选。默认inner。- inner:取两表共同拥有的,并集合并成一表。
- outer:并集合并成一表。
- left:以左表为准,右表中没有的部分填0或NaN
- right:以右表为准,左表中没有的部分填0或NaN
-
on
,指明参与合并的列名,必须存在于两张DataFrame中。 -
left_on
,左表中用于合并的列名。 -
right_on
,右表中用于合并的列名。 -
left_index
,是否将左表的行索引作为合并键。默认False。 -
right_index
,是否将右表的行索引作为合并键。默认False。 -
sort
,根据合并键按字典顺序排序。默认False。 -
suffixes
,指定待合并表中具有相同列名的列的后缀。默认为(‘_x’,’_y’)。 -
copy
,默认True,只要为false,尝试在某些情况下避免完全复制数据。 -
indicator
,给合并后的DataFrame添加一列,显示每一行的来源表。可选值为:- False,不添加合并指示列。
- True,添加合并指示列,默认合并指示列为_merge,值为left, right或both。
- str,指定合并指示列的名称。
-
validate
,验证合并方式有效的值。应设为None(默认),no_check(不验证)或one_to_one(检查是否一对一连接)等。
merge()函数示例
以下示例均以如下两张表为基础:
import pandas as pd
# 创建左表
left = pd.DataFrame({'key1': ['K0', 'K1', 'K2', 'K3'],
'key2': ['K0', 'K1', 'K0', 'K1'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
# 创建右表
right = pd.DataFrame({'key1': ['K0', 'K1', 'K2', 'K3'],
'key2': ['K0', 'K0', 'K0', 'K1'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
示例一:内连接(inner join)
内连接,顾名思义,只返回左右DataFrame键列共有的部分,可以用how参数设置,默认为inner join。
result = pd.merge(left, right, on=['key1', 'key2'])
# 输出结果
print(result)
结果如下:
key1 key2 A B C D
0 K0 K0 A0 B0 C0 D0
1 K1 K0 A1 B1 C1 D1
示例二:外连接(outer join)
外连接即保留左右两边全部的数据,并将结果取并集。在形式上,只要一个表中没有与另一个表中某行相对应的数据,全部都用NaN填充。
result = pd.merge(left, right, on=['key1', 'key2'], how='outer')
# 输出结果
print(result)
结果如下:
key1 key2 A B C D
0 K0 K0 A0 B0 C0 D0
1 K1 K0 A1 B1 C1 D1
2 K2 K0 A2 B2 C2 D2
3 K3 K1 A3 B3 NaN NaN
4 K2 K0 NaN NaN C2 D2
5 K3 K0 NaN NaN C3 D3
以上就是merge()函数的用法解读,相信你已经理解了。