通常来说,我们需要的数据不可能都来自同一张表格,所以了解如何对不同格式的表格进行拼接、合并是非常重要的。
本文将介绍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' ,实现不同形式的合并。
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_on和right_on指定要进行合并的列名。
参数on也可以传入一个包含多个列名的list,如['ts_code', 'trade_date'],此时在默认how='inner'的情况下, 合并后只会返回['ts_code', 'trade_date']值在两个表格中都相等的行。
我们还可以通过设置参数how='left', how='right', how='outer', 分别进行左连接、右连接和外连接。
how='left'
左连接的示意图如上所示,从下面示例代码返回的结果可以观察到,左连接会保留左侧表格的所有数据,以及两个表格按照on设置的条件合并后重合的部分,没有数据的地方会自动填充NaN值。
how='right'
同理,右连接则会保留右侧表格的所有数据,以及两个表格按照on设置的条件合并后重合的部分,没有数据的地方会自动填充NaN值。
how='outer'
外连接的示意图如上所示,返回满足合并条件的所有行,没有数据的地方会自动填充NaN值。
04
总结
本文介绍了Pandas中常用的合并表格的方法,分别为.append(), pd.concat()和pd.merge(),我们观察到,通过设置不同的参数值,可以对表格进行不同形式的拼接、合并操作。
如果想要批量拼接、合并,可以通过写循环来实现。有关这三种方法的官方文档链接已附在下面,感兴趣的话可以自行查看所有可设置的参数,解锁新功能!
近期热门:
豆瓣评分3.2,用Python+AI 告诉你为啥《上海堡垒》凉凉了
我要放大招,用Python来预测双色球
本篇文章来源于: 菜鸟学Python
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python中如何使用正则表达式过滤网页内容10/31
- ♥ Python 检查一个字符串是否包含另一个字符串08/28
- ♥ 如何在python中安装pip10/03
- ♥ Python 中更优雅的日志记录方案04/11
- ♥ 使用Python开发Excel宏脚本的神器!09/01
- ♥ 使用python画心和代码演示08/15
内容反馈