merge
通过键(这里的键是dataframe的某一列)拼接列,应用场景:针对同一主键存在两张包含不同字段的表,如果想把这两张表整合成一张表,就可以使用merge。merge结果的行数并没有
pd.merge(left, right, how="inner", on=None, suffixes=("_x", "_y"))
参数how:
- inner: 按照拼接键匹配,取交集
- outer: 按照拼接键匹配,取并集
- left: 拼接键与左df完全一样,从右df中寻找与左df相匹配的行
- right: 拼接键与右df完全一样,从左df中寻找与右df相匹配的行
- cross: 交叉连接,返回笛卡尔积
注:无论采用哪种方式,merge函数第一个参数的列始终在最前面
是pd的方法,即pd.merge, 每次只能合并两个df
join
同样是拼接列,但是默认将索引作为键。参数on用来指定左df的列名,若指定后,用该列名与右df的索引进行拼接。
df1.join([df2,...], on=None, how='left', lsuffix=“”, rsuffix=“”, sort=False)
属于df的方法,lsuffix和rsuffix用于当df1和df2存在同名的列时,用于区分。
concat
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False,
copy=True)
join参数表示多个df按索引拼接的方式
属于pd的方法,可以用来合并多个df, 将ignore_index设为True进行索引重排。
append
df1.append(df2, ignore_index=False, verify_integrity=False)
属于df的方法,有点类似pd.concat([df1, df2], axis=0)
用的较少,相当于pd.concat的简版,只能在行方向进行拼接