一文搞定pandas的数据合并

在实际处理数据业务需求中,我们经常会遇到这样的需求:将多个表连接起来再进行数据的处理和分析,类似SQL中的连接查询功能。
pandas中也提供了几种方法来实现这个功能,表现最突出、使用最为广泛的方法是merge。本文中将下面四种方法及参数通过实际案例来进行具体讲解。

  • merge
  • append
  • join
  • concat

    为方便大家练习,文末提供了本文源代码的获取方式。

    文章目录


    导入库
    做数据分析的时候这两个库是必须导入的,国际惯例一般。

import pandas as pdimport numpy as np

— 01 —

merge

官方参数
官方提供的 merge函数的参数如下:

下面将通过案例讲解几个重要参数的使用方法:

DataFrame.merge(left, right,                 how='inner',   # {‘left’, ‘right’, ‘outer’, ‘inner’}, default ‘inner’                on=None,                 left_on=None, right_on=None,                 sort=False,                 suffixes=('_x', '_y'))

模拟数据

注意4组数据的不同

使用默认参数

两种不同的写法,效果相同

参数how

  • how参数的取值有4种:
  • inner(默认)
  • outer
  • right
  • left



    参数on

用于连接的列索引列名,必须同时存在于左右的两个dataframe型数据中,类似SQL中两个表的相同字段属性
如果没有指定或者其他参数也没有指定,则以两个dataframe型数据的相同键作为连接键

on参数为单个字段


另一个例子:


on参数为多个字段-列表形式


参数lefton/righton

参数suffixes

合并的时候一列两个表同名,但是取值不同,如果都想要保存下来,就使用加后缀的方法,默认是 _x,_y,可以自己指定

参数sort

对连接的时候相同键的取值进行排序

— 02 —

concat

官方参数

concat方法是将两个 DataFrame数据框中的数据进行合并

  • 通过axis参数指定是在行还是列方向上合并
  • 参数 ignore_index实现合并后的索引重排

    生成数据

    指定合并轴

    改变索引


    join参数


    sort-属性排序


    — 03 —

    append

    官方参数

    基本使用

data3.append(data4)   # 等同于pd.append([data3, data4])  忽略pandas版本的警告

改变索引-自然数排序

data3.append(data4, ignore_index=True)  # 设置参数

sort=True-属性的排序

data3.append(data4)   # 默认对字段属性排序

— 04 —

join

官方参数

通过相同索引合并


相同字段属性指后缀


相同字段变成索引index

相同字段保留一次


为方便大家练习,可以在公号「Python数据之道」后台回复 “20200917” 获取本文的源代码文件。
---------End---------

©著作权归作者所有:来自51CTO博客作者mb5fe18e7c44408的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 数据结构之哈希表
  2. 1.5 万 Star!界面酷炫、简单易用的数据库开源客户端
  3. 数据结构与算法: 三十张图弄懂「图的两种遍历方式」
  4. 干货 | 滴滴 数据分析原来是这样做的!
  5. 几道和「黑洞照片」那种海量数据有关的算法问题
  6. 数据结构与算法——最小生成树
  7. 数据结构与算法——图论基础与图存储结构
  8. 一道简约而不简单的算法题--数据流的中位数
  9. 数据结构与算法——图最短路径

随机推荐

  1. 第 5 章 MySQL 备份与恢复
  2. mysql笔记02:source命令导入大数据速度慢
  3. Mac下使用brew搭建PHP7+nginx+mysql开发
  4. shared pool原理,有AWR报告,主要是library
  5. 要查询选修了所有课程的学生信息,怎样用sq
  6. java+mysql中文乱码问题
  7. PHP执行.SQL文件的实例代码分享
  8. 通过MySQL JDBC驱动程序(连接器/J)进行负
  9. 如何用c#创建SQL Server 2012数据库?
  10. Oracle使用SQL Develop时报错