python3 join_python3数据拼接——merge/join/append/concat
理解:
两个数据进行拼接,理解上需要三个要素:方向:横向 or 纵向
依据:双方各按什么键来拼接
规则:键列确定后取 交集 or 并集 or 优先某数据
分类:
按方向分类横向:merge/ join
纵向:append
综合:concat
1、merge
pd.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)
参数解析:left/right: 数据对象
on: 用于判断拼接规则的键列,需要两个数据都有该列
left_on/right_on: left/right对象用于拼接数据的键列
left_index/right_index: 是否使用left/right对象的索引作为拼接键
how: 拼接规则,分 ’left', 'right', '外在‘,’内在‘
sort:链接键是否按字母顺序进行排序
suffixes: 两个数据对象拼接后对同列名添加后缀,默认值为('_x', '_y')
2、join
left.join(other, on=None, how='left', lsuffix='', rsuffix='',sort=False)
参数与merge类似,只是默认链接how='left'
3、append
DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=None)
参数解析:other:其他数据对象
ignore_index: 默认值False,使用原标签;如果为True,则重新排列index标签
verify_integrity: 默认值为False,如果为True当创建相同的index时会抛出ValueError的异常
sort: 默认为None,我也不太懂
4、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):
合并了merge(等价与axis=1) 和append(等价与axis=0) 的功能
参数解析:objs: 需要连接的对象集合
axis:连接的方向,0代表纵向, 1代表横向
join:’outer‘代表并集, ’inner‘代表交集
join_axes: 指定自定义的索引
keys:为原始DataFrame添加一个键,默认无
ignore_index:重建索引
案例:
df1 = pd.DataFrame([['a', 1], ['b', 2]], columns=['A', 0])
df2 = pd.DataFrame([['a', 1], ['b', 2]], columns=['B', 0])
df3 = pd.concat([df1, df2], join='inner')
df4 = pd.concat([df1, df2], axis=1, join_axes=[df1.index])
print(df3)
print(df4)
运行结果:
0
0 1
1 2
0 1
1 2
A 0 B 0
0 a 1 a 1
1 b 2 b 2