知行编程网知行编程网  2022-03-31 02:01 知行编程网 隐藏边栏 |   抢沙发  21 
文章评分 0 次,平均分 0.0

如何用Pandas花式拼接表格数据


通常来说,我们需要的数据不可能都来自同一张表格,所以了解如何对不同格式的表格进行拼接、合并是非常重要的。


本文将介绍Pandas库中常用的合并表格的方法,包括.append(), pd.concat(), pd.merge(), 并配合实例进行讲解。



01

上下拼接



.append()【1】方法可以实现表格的上下拼接,一般来说它们会有相同的列名,比如,上下拼接两只股票的日线数据。




表格df的数据在上,表格df1的数据在下,注意到拼接之后的索引并没有随新表更新,这一问题可以通过设置参数ignore_index=True来解决。




如果想要批量拼接,可以写一个循环,如将截至某日的所有上市公司股票日线数据拼接成一个大表格,示例中选取的时间段为'20180101'-'20180105',并只选取了前5只股票,效果如下。




pd.concat()【2】也能实现上面的效果,同样通过设置参数ignore_index=True来解决索引问题,这里的axis=0为默认值,默认按行拼接。





02


左右拼接



pd.concat()不仅能够实现上下拼接,而且还能通过设置参数axis=1实现左右拼接。以拼接两个不同长度的表格为例,没有值的位置会自动填充为NaN





如果想要按列拼接有相同索引的行,可以设置参数join='inner',设置参数sort=True升序排列。以两个索引为时间的表格为例,效果如下。



03 

合并表格



pd.merge()【3】方法可以实现表格之间的合并操作,类似于SQL中的连接JOIN的用法。通过设置参数how='left', 'right', 'outer', 'inner',默认为 'inner' 实现不同形式的合并。


如何用Pandas花式拼接表格数据


how='inner'



设置参数on='trade_date' 表示两个表格将按照列'trade_date' 中的值进行合并,当参数how为默认值'inner',结果和用pd.concat()方法设置参数join='inner'得到的类似。


区别在于,pd.merge()操作会自动为合并前有相同列名、不同值的列名添加后缀,以便我们进行区分,如下所示的'close_x'和'close_y'



如果想要让后缀名变得更有意义,可以通过设置参数suffixes=['_000001', '_000002']实现。                  




如果两个表格中想要进行合并的列名不同,如下所示的表格df中的交易日期列名为'trade_date_stock'表格df_index中的交易日期列名为'trade_date',这时需要我们设置参数left_onright_on指定要进行合并的列名。



参数on也可以传入一个包含多个列名的list,如['ts_code', 'trade_date'],此时在默认how='inner'的情况下, 合并后只会返回['ts_code', 'trade_date']值在两个表格中都相等的行。



我们还可以通过设置参数how='left', how='right', how='outer', 分别进行左连接、右连接和外连接。


如何用Pandas花式拼接表格数据


how='left'



左连接的示意图如上所示,从下面示例代码返回的结果可以观察到,左连接会保留左侧表格的所有数据,以及两个表格按照on设置的条件合并后重合的部分,没有数据的地方会自动填充NaN值。




如何用Pandas花式拼接表格数据


how='right'



同理,右连接则会保留右侧表格的所有数据,以及两个表格按照on设置的条件合并后重合的部分,没有数据的地方会自动填充NaN值。




how='outer'



外连接的示意图如上所示,返回满足合并条件的所有行,没有数据的地方会自动填充NaN值。


04

总结


本文介绍了Pandas中常用的合并表格的方法,分别为.append()pd.concat()pd.merge(),我们观察到,通过设置不同的参数值,可以对表格进行不同形式的拼接、合并操作。


本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享