1、pandas的拼接分为两种:
(1)级联:pd.concat, pd.append
(2)合并:pd.merge, pd.join
2、使用pd.concat()级联
pandas使用pd.concat函数,与np.concatenate函数类似,只是多了一些参数:
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False,
copy=True)
(1)简单级联
优先增加行数(默认axis=0),可以通过设置axis来改变级联方向
示例:pd.concat([df1,df2])#df1、df2为Dataframe类型的数据
注意:index在级联时可以重复,也可以选择忽略ignore_index,重新索引
示例:pd.concat([df1,df2],axis=0,ignore_index=True)
还可以使用多层索引 keys
concat([x,y],keys=['文科','理科'])
(2)不匹配级联
不匹配指的是级联的维度的索引不一致。例如纵向级联时列索引不一致,横向级联时行索引不一致
有3种连接方式:
- 外连接:补NaN(默认模式)
1、不匹配级联在外连接的模式下要求如果axis=0行级联列索引必须保持一致,
#axis=1列级联行索引必须保持一致
# 2、如果不一致缺哪个索引就补全哪个索引
- 内连接:只连接匹配的项
# 内连接在级联的时候不一致的地方全部丢弃
- 连接指定轴 join_axes
3、使用append函数没有axis属性,只能对行进行级联
合并
由于在后面级联的使用非常普遍,因此有一个函数append专门用于在后面添加
merge与concat的区别在于,merge需要依据某一共同的行或列来进行合并
使用pd.merge()合并时,会自动根据两者相同column名称的那一列,作为key来进行合并。
注意每一列元素的顺序不要求一致
一对一合并:如果在合并的时候,另个表的key那一列对应的值完全一样,这个合并就是一对一合并
多对一合并:表1中的某些属性的值,在表2中有多个和他对应,此时就是一对多合并,在合并的时候,首先要把“一”的哪一方不足的属性值根据已有的属性进行复制,然后在合并
多对多合并: 如果两个表没有相同的属性,可以左边的表出一个属性,右边的表出一个属性,然后进行合并
这种合并两个属性不能并在一起
df1.merge(df6,left_on="name",right_on="姓名")