pandas的拼接操作

 

 

 

 

pandas的拼接分为两种:

  • 级联:pd.concat, pd.append
  • 合并:pd.merge, pd.join

1. 使用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) 简单级联

和np.concatenate一样,优先增加行数(默认axis=0)

可以通过设置axis来改变级联方向

注意index在级联时可以重复

也可以选择忽略ignore_index,重新索引

或者使用多层索引 keys

2) 不匹配级联

不匹配指的是级联的维度的索引不一致。例如纵向级联时列索引不一致,横向级联时行索引不一致

有3种连接方式:

  • 外连接:补NaN(默认模式)
  • 内连接:只连接匹配的项  #增加属性 join='inner'
  • 连接指定轴 join_axes

3) 使用append()函数添加

由于在后面级联的使用非常普遍,因此有一个函数append专门用于在后面添加

 

2. 使用pd.merge()合并

merge与concat的区别在于,merge需要依据某一共同的行或列来进行合并

使用pd.merge()合并时,会自动根据两者相同column名称的那一列,作为key来进行合并。

注意每一列元素的顺序不要求一致

1) 多对一合并

2) 一对一合并

3) 多对多合并

 

4) key的规范化

  • 使用on=显式指定哪一列为key,当有多个key相同时使用
  • 使用left_on和right_on指定左右两边的列作为key,当左右两边的key都不想等时使用

5) 内合并与外合并

  • 内合并:只保留两者都有的key(默认模式)
  • 外合并 how='outer':补NaN
  • 左合并、右合并:how='left',how='right',

6) 列冲突的解决

当列冲突时,即有多个列名称相同时,需要使用on=来指定哪一个列作为key,配合suffixes指定冲突列名

可以使用suffixes=自己指定后缀

posted @ 2017-10-26 22:32  你好,小帝  阅读(15729)  评论(0编辑  收藏  举报