公众号:尤而小屋
作者:Peter
编辑:Peter

大家好,我是Peter~

图解pandas数据合并:concat+join+append

在上一篇文章中介绍过pandas中最为常用的一个合并函数merge的使用,本文中介绍的是另外3个与合并操作相关的函数:

  • concat
  • join
  • append

Pandas连载

本文是Pandas数据分析库的第15篇,欢迎阅读:

模拟数据

首先是模拟几份不同的数据:

import pandas as pd
import numpy as np

concat

concat也是一个常用的合并函数,下面通过具体例子来介绍它的使用。

参数

pandas.concat(objs,  # 合并对象axis=0,   # 合并方向,默认是0纵轴方向join='outer', # 合并取的是交集inner还是并集outerignore_index=False, # 合并之后索引是否重新keys=None, # 在行索引的方向上带上原来数据的名字;主要是用于层次化索引,可以是任意的列表或者数组、元组数据或者列表数组levels=None, # 指定用作层次化索引各级别上的索引,如果是设置了keysnames=None, # 行索引的名字,列表形式verify_integrity=False, # 检查行索引是否重复;有则报错sort=False, # 对非连接的轴进行排序copy=True   # 是否进行深拷贝)

默认情况

默认情况是直接在纵向上进行合并

axis

指定合并的方向

如果某个数据框中不存在,则会显示为NaN:

  • 根据实际数据调整合并的方向,默认是axis=0
  • 某个数据库中不存在的数据,用NaN代替

参数ignore_index

是否保留原表索引,默认保留,为 True 会自动增加自然索引。

参数join

指定取得交集inner还是并集outer,默认是并集outer

df3和df4只有地址这个字段是相同的,所以保留了它,其他的舍弃了:

参数keys

当我们设置了索引重排(ignore_index=True),keys参数就无效啦

参数name

指定每个层级索引的名字

我们可以检查下df6的索引,发现是层级索引:

合并多个DataFrame

同时合并df1、df2、df5

pd.concat([pd.concat([df1,df2],axis=0,ignore_index=True),df5],axis=1)

分两步来实现:先合并df1、df2,将得到的结果和df5合并

join

参数

来自官网的参数说明:

dataframe.join(other,  # 待合并的另一个数据框on=None,  # 连接的键how='left',   # 连接方式:‘left’, ‘right’, ‘outer’, ‘inner’ 默认是leftlsuffix='',  # 左边(第一个)数据框相同键的后缀rsuffix='',  # 第二个数据框的键的后缀sort=False)  # 是否根据连接的键进行排序;默认False

模拟数据

为了解释join的操作,再模拟下数据:

参数 lsuffix、rsuffix

功能是为了添加指定的后缀

如果不指定的话,会报错:

参数how

how参数默认是left,保留左边的全部字段。右边不存在的数据用NaN

改成right之后,保留右边的全部数据:

可以在默认的参数结果中,name字段被分成了name_left和name_right,如何进行字段的合并呢???

  1. 先把键当做行索引
  2. 通过join合并
  3. 通过reset_index()重新设置索引

合并两个数据:

最后进行索引重置的功能:

还有一种更为简便的方法:

合并多个DataFrame

利用join来实现多个DataFrame的合并:

如果我们想要用merge函数来实现呢?

使用how=“outer”,保留全部字段的数据信息

append

字面意思是“追加”。向dataframe对象中添加新的行,如果添加的列名不在dataframe对象中,将会被当作新的列进行添加

参数

DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=False)

参数解释:

  • other:待合并的数据。可以是pandas中的DataFrame、series,或者是Python中的字典、列表这样的数据结构
  • ignore_index:是否忽略原来的索引,生成新的自然数索引
  • verify_integrity:默认是False,如果值为True,创建相同的index则会抛出异常的错误
  • sort:boolean,默认是None。如果self和other的列没有对齐,则对列进行排序,并且属性只在版本0.23.0中出现。

模拟数据

添加不同类型数据

1、Python字典

2、Series类型

3、最常用的DataFrame

默认合并

df12和df13默认合并的结果:

参数ignore_index

改变生成的索引值

参数verify_integrity

默认是False,如果值为True,创建相同的index则会抛出异常的错误

案例实战

假设现在一个excel表中有3个sheet:订单表、订单商品表、商品信息表:

1、订单表

2、订单商品表

3、商品信息表

现在我们通过合并函数将3个sheet中的内容关联起来:

import pandas as pd
import numpy as np# 读取订单表中的内容
df1 = pd.read_excel("水果订单商品信息3个表.xlsx",sheet_name=0)  # 第一个sheet的内容,索引从0开始
df1

#  读取订单商品表
df2 = pd.read_excel("水果订单商品信息3个表.xlsx",sheet_name=1)# 商品信息表
df3 = pd.read_excel("水果订单商品信息3个表.xlsx",sheet_name="商品信息")  # 可以直接指定sheet的名字name,不通过索引
df3

第一步:订单表和订单商品表的合并

第二步:将上面的结果和商品信息表合并

当我们得到上面的结果后,就可以完成很多的需求,举2个例子说明:

1、不同水果的销量和订单数:根据水果进行分组统计数量和订单数

2、不同区域的水果销售额和客户数

总结

两篇关于pandas数据合并的文章,详细介绍了4个函数:merge、concat、join、append的使用;其中,merge和concat最为常用。它们可以是实现SQL中join的功能。不管是交集、并集、还是左右连接,甚至是全连接都是可以直接实现的。

上面的实战案例数据是存放在一个Excel表中。在pandas中,我们可以从不同的来源:Excel、数据库、本地文件夹等获取来进行数据合并,方便后续实现我们的需求,希望本文对读者有所帮助。

pandas数据合并:concat、join、append相关推荐

  1. pandas 数据合并 pd.join() pd.merge() pd.crosstab() pd.concat()

    文章目录 pd.join() pd.merge() pd.merge(left, right, how='inner', left_on=None, right_on=None...)形式 按照一列进 ...

  2. 【Python】图解Pandas数据合并:concat、join、append

    公众号:尤而小屋 作者:Peter 编辑:Peter 图解pandas数据合并:concat+join+append 在上一篇文章中介绍过pandas中最为常用的一个合并函数merge的使用,本文中介 ...

  3. PANDAS 数据合并与重塑(concat篇) 原创 2016年09月13日 19:26:30 47784 pandas作者Wes McKinney 在【PYTHON FOR DATA ANALYS

    PANDAS 数据合并与重塑(concat篇) 原创 2016年09月13日 19:26:30 标签: 47784 编辑 删除 pandas作者Wes McKinney 在[PYTHON FOR DA ...

  4. 【python数据分析】pandas数据合并

    pandas数据合并 使用contact,append,merge完成数据集合并 自己学习用,欢迎大佬指正. 1.concat pd.concat()可以合并series和DataFrame对象,默认 ...

  5. 04_pandas字符串函数;数据合并concat、merge;分组groupby;Reshaping;Pivot tables;时间处理(date_range、tz_localize等)

    字符串函数,Series的lower()函数 Series在str属性中提供了一组字符串处理方法,可以方便地对数组中的每个元素进行操作,如下面的代码片段所示.请注意,str中的模式匹配通常默认使用正则 ...

  6. Pandas知识点-合并操作join

    Pandas知识点-合并操作join 在Pandas中,join()方法也可以用于实现合并操作,本文介绍join()方法的具体用法. 一.基础合并操作 join(other): 将一个或多个DataF ...

  7. pandas数据合并与重塑_PANDAS 数据合并与重塑(concat篇)

    pandas作者Wes McKinney 在[PYTHON FOR DATA ANALYSIS]中对pandas的方方面面都有了一个权威简明的入门级的介绍,但在实际使用过程中,我发现书中的内容还只是冰 ...

  8. pandas数据合并与重塑(concat篇)

    转载自:链接 pandas作者Wes McKinney 在[python for data anlysis]中对pandas的方方面面都有了一个权威简明的入门级的介绍,但在实际使用过程中,我发现书中的 ...

  9. 搞懂Pandas数据合并,这一片就够了

    数据合并是数据处理过程中的必经环节,pandas作为数据分析的利器,提供了四种常用的数据合并方式,让我们看看如何使用这些方法吧! 1.concat() concat() 可用于两个及多个 DataFr ...

最新文章

  1. linux检测网卡步骤,linux网卡检测命令
  2. Type EnumTypeInfo<xxxxx> cannot be used as key. Contained UNSUPPORTED key types: EnumTypeInfo<xxxxx>
  3. ssh 命令行通过私钥登录其它设备
  4. kafka使用_Kafka介绍与使用
  5. Java同步数据结构之ConcurrentLinkedQueue
  6. libcaffe.so: undefined reference to `cv.read
  7. fiddler4安装及使用手机抓包
  8. mysql查看表空间占用情况
  9. 地质专业考遥感计算机研究生,我想考中国地质大学的研究生,谁能告诉我是选遥感..._在职考研_帮考网...
  10. 确定手机imsi号码的方法
  11. 为什么要选择crm私有化布署?
  12. 09年国内外免费杀毒软件大收罗
  13. 从知名外企到创业公司做CTO是一种怎样的体验?
  14. rovisional headers are shown Learn more 报错
  15. 高长勇老师:如何去构建企业的魂
  16. git pull 下拉代码报错 There is no tracking information for the current branch. Please specify which branc
  17. 因子分解机FM算法(Factorization Machine)
  18. 中小企业融资解决方案
  19. 如何在 CentOS Stream 8上安装 LibreNMS
  20. 点集拓扑学|2. 拓扑空间

热门文章

  1. 李永乐 线性代数 强化篇 第一章
  2. JS使用Lodop控件打印表单和二维码
  3. linux点阵数字图案,新人求助 点阵识别 数字
  4. 小学加减法数学题自动生成
  5. Unity CardboardVR应用在华为部分机型显示黑屏后自动退出
  6. ESB之旅(拉巴士的小骡子)
  7. ibili的使用教程
  8. Windows10电脑底部任务栏无响应解决方法
  9. Java学习之旅(一):探索extends
  10. MRD 和PRD的区别