pandas的拼接操作
1.使用pd.concat()级联
①简单级联:df1和df2的行列相同
pd.concat((df1,df2),axis=0) 默认是垂直级联;如果axis=1的话就是水平级联
ignore_index=False 默认不改变原来的索引,True的话就会删除原索引,由递增的0,1,2,3代替。
keys=[‘df1’,‘df2’] 使用多层索引:
②不匹配级联
不匹配指的是级联的维度的索引不一致。例如纵向级联时列索引不一致,横向级联时行索引不一致
1)外连接,没有的补NaN(默认)
2)内连接,只连接匹配的项
3)连接指定轴join_axes
③使用append()函数添加
由于在后面级联的使用非常普遍,因此有一个函数append专门用于在后面添加。默认垂直添加
2.使用pd.merge()合并
merge与concat的区别在于,merge需要依据某一共同的行或列来进行合并(要求合并的两个DataFrame 必须有一行或者一列有相同的值)
使用pd.merge()合并时,会自动根据两者相同column名称的那一列,作为key来进行合并。
注意每一列元素的顺序不要求一致
1)一对一合并
2)多对一合并
3)多对多合并
4)key的规范化
- 使用on=显式指定哪一列为key,当有多个key相同时使用 pd.merge(df1,df2,on=‘name’)
- 使用left_on和right_on指定左右两边的列作为key,当左右两边的key都不相等时使用 pd.merge(df1,df2,left_on=‘name’,right_on=‘姓名’)
- 当左边的列和右边的index相同的时候,使用right_index=True pd.merge(df1,df2,left_on=‘age’,right_index=True)
5)内合并与外合并
-内合并:只保留两者都有的key(默认)how=‘inner’
-外合并:how=‘outer’,没有的值补NaN
- 左合并、右合并:how=‘left’,how=‘right’(外合并与mysql中的表格的连接方式一样,以一个表为标准,没有的补NaN)
6)列冲突的解决
当列冲突时,即有多个列名称相同时,需要使用on=来指定哪一个列作为key,配合suffixes指定冲突列名
可以使用suffixes=自己指定后缀
例如: