zhaoyqiu的数据分析进阶之路2.0

merge

2020-08-09  本文已影响0人  喝奶茶不加奶茶

一、merge函数

pandas提供了一个类似关系数据库的连接(join)操作的方法merge,可以根据一个或多个键将不同DataFrame中的行连接起来。

准备数据以便进行说明:

df1= pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                      'A': ['A0', 'A1', 'A2', 'A3'],
                      'B': ['B0', 'B1', 'B2', 'B3']}) 
df2 = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                      'key2': ['K0', 'K0', 'K0', 'K0'],
                      'C': ['C0', 'C1', 'C2', 'C3'],
                      'D': ['D0', 'D1', 'D2', 'D3']})
df3 = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                      'key2': ['K0', 'K0', 'K0', 'K0'],
                      'C': ['C0', 'C1', 'C2', 'C3']})

merge语法说明:

merge(left, right, how='inner', on=None, left_on=None, right_on=None,
      left_index=False, right_index=False, sort=True,
      suffixes=('_x', '_y'), copy=True, indicator=False)

参数说明

1、left和right
pd.merge()只能用于两个表的拼接,且用于左右连接。
如果需要拼接的两个表中,有相同的列信息,那么进行拼接的时候即使不指定以哪个字段为主键,函数也会默认用信息相同的列做主键对两个表进行拼接。
df1


df2



可以看出df1和df2两个表中字段‘key1’是重复列,所以在使用pd.merge()拼接时不用指定主键,直接把一个表的名字传递给参数left,另一个表的名字传递给参数right即可。


2、参数on
如果两张表有两列以上信息相同,可以指定哪一列作为主键,如果不指定,相同信息的列都会作为拼接依据。
3、参数how

merge函数的作用是将两个pandas对象横向合并,遇到重复的索引项时会使用笛卡尔积,默认inner连接,可选left、outer、right连接。常用应用场景:针对同一个主键存在两张包含不同字段的表,将其整合到一张表里。
df1

所谓左连接,就是指以第一个表索引为基准,右边的表中如果不在左边的的则不加入,如果在左边的,就以笛卡尔积的方式加入。

merge/join与concat的不同之处在于on参数,可以指定某一个对象为key来进行连接。

concat是上下拼接。

上一篇 下一篇

猜你喜欢

热点阅读