pandas中DataFrame数据合并merge方法,inner交集,outer合集,left左连接
merge 函数通过一个或多个键将数据集的行连接起来。
场景:针对同一个主键存在的两张包含不同特征的表,通过主键的链接,将两张表进行合并。合并之后,两张表的行数不增加,列数是两张表的列数之和。
def 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):
参数 描述
how 数据融合的方法,从在不重合的键,方式(inner、outer、left、right)
on 用来对齐的列名,一定要保证左表和右表存在相同的列名。
left_on 左表对齐的列,可以是列名。也可以是DataFrame同长度的arrays
right_on 右表对齐的列,可以是列名。
left_index 将左表的index用作连接键
right_index 将右表的index用作连接键
suffixes 左右对象中存在重名列,结果区分的方式,后缀名。
copy 默认:True。将数据复制到数据结构中,设置为False提高性能。
默认:以重叠的列名当作连接键
默认:做inner连接,取key的交集
连接方式还有left right outer
多键连接时将连接键做成列表传入。
on默认是两者同时存在的列
两个对象的列名不同,需要分别制定。
df7 = pd.merge(df1, df2, left_on=['key1','data1'], right_on=['key2','data2'], how='outer')
import pandas as pd df1 = pd.DataFrame({'data1': [1, 2, 3, 6]}) df2 = pd.DataFrame({'data1': [1, 2, 3, 4], 'data2': [1, 2, 3, 5]}) df3 = pd.merge(df1, df2, on='data1', how="left") print(df1) print(df2) print("===" * 10) print(df3)