【数据处理】Pandas库:表的合并与拼接

277 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情

注意:本案例使用 Jupyter Notebook 进行案例演示

1. 表操作

1.1 pd.concat实现合并

pd.concat([data1, data2], axis=1)

  • 按照行或列进行合并
  • axis=0为列索引
  • axis=1为行索引

导入相关库并读取数据:读取第一张想要合并到表

# 1. 读取数据
stock_new = pd.read_csv("stock_new.csv")
stock_new.head()

运行结果如下图所示:

image.png

读取第二张想要合并的表:

stock_new = pd.read_csv("stock_change.csv")
stock_change.head()

image.png

1.1.1 按行的方向进行拼接

合并上面两张表,并且按照行的方向进行拼接

# 按行的方向进行拼接
pd.concat([stock_new, stock_change], axis=1)

运行结果如下图所示:两张表中可能会存在这种情况:表一中的某样本在表二中不存在,则合并后不存在的样本用NaN缺失值自动补齐。

  • 可以发现表头的个数多了很多,这是因为两表按照行的方向进行了拼接。

image.png

1.1.2 按列的方向进行拼接

如果两个表字段不一致,进行竖直拼接,没有的部分用NaN补齐。字段一致就会填入该填的数据。

将两表按照列的方向进行合并:

pd.concat([stock_new, stock_change], axis=0)
# 发现在列的方向多了一倍样本

运行结果如下图所示:发现新表的样本数量多了一倍,这是因为按照列的方向进行的拼接。

image.png

1.2 pd.merge实现合并

pd.merge(left, right, how='inner', on=None)

  • 可以指定按照两组数据的共同键值对合并或者左右各自

  • left:左表

  • right:右表

  • on:按哪个字段进行合并

  • how:连接方式

    • inner:共有的键保留下来,不共有的键就不要了(用的最多)
    • left:左表的字段都保留下来,右表配合左表
    • right:右表中的字段都保留,左表配合右表
    • outer:外连接,两个表的键都保留

通俗理解就是按照两个表中共同存在的字段进行合并。举一个例子,比如表1有date字段,表2也有date字段,那么我们可以使用pd.merge的方式,将两个表按照date字段进行合并(on=date),经过合并会返回一个新表,新表就会将两表共有date字段的所在行保存下来。