【Python处理EXCEL】基础操作篇3:用Python对Excel表格进行拼接合并

这篇具有很好参考价值的文章主要介绍了【Python处理EXCEL】基础操作篇3:用Python对Excel表格进行拼接合并。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

准备工作

一、横向拼接

1.1 一般拼接

1.2 指定键进行拼接,即指定某一列作为两个表的连接依据。

1.2.1 多对一

1.2.2 多对多

1.2.3 用on来指定多个连接键

1.2.4 指定左右连接键

1.2.5 索引当作连接键

1.3 连接的方式

1.3.1 内连接(inner)

1.3.2 左连接(left)

1.3.3 右连接(right)

1.3.4 外连接(outer)

二、纵向拼接

2.1 普通合并

2.2 重叠数据的合并

三、整合代码


准备工作

我准备了两个表格数据,以此展示本期的表格的合并的工作。数据示例如下:

表格1

python合并excel,python,经验分享,pandas,数据分析,pycharm

表格2

python合并excel,python,经验分享,pandas,数据分析,pycharm

接着将这两个表格的数据分别导入python中,导入代码入下:

import pandas as pd
df1=pd.read_excel(r"D:\杂货\展示数据1.xlsx",sheet_name='Sheet1')
df2=pd.read_excel(r"D:\杂货\展示数据2.xlsx",sheet_name='Sheet1')

 具体的导入方法和以上使用到的pandas库的安装在前章我已有介绍,不再赘述,请转至:

https://blog.csdn.net/Deng333333555/article/details/125092526?spm=1001.2014.3001.5501

本篇涉及到一些基础的表格数据的概念,而对于“索引”的相关知识可以看之前写的“基础操作篇2”,里面有相关的介绍,可以帮助理解“索引”的含义。相关可转至以下连接:

https://blog.csdn.net/Deng333333555/article/details/125138116?spm=1001.2014.3001.5501 

一、横向拼接

1.1 一般拼接

首先我们先看一下合并前的表格1和表格2的数据样式:

python合并excel,python,经验分享,pandas,数据分析,pycharm

 这两个表格存在公共列,为列索引为“学号”的那一列。

合并代码如下:

merge_1=pd.merge(df1,df2)#df1与df2分别为要合并的两个表格
print(merge_1)

此时程序会自己寻找两个表的公共列,依照公共列进行拼接。(公共列:有相同的列)

python合并excel,python,经验分享,pandas,数据分析,pycharm

 合并后的数据如上图所示。

1.2 指定键进行拼接,即指定某一列作为两个表的连接依据。

1.2.1 多对一

多对一的情况下的列表数据大致为一下形式:

python合并excel,python,经验分享,pandas,数据分析,pycharm

 可以看到,上面为列表1,下面为列表2,列表1的“学号”那一列的数据都是“唯一的”,即分别只有一个100,101,102,103,没有重复值;而在列表2中,“学号”那一列的数据就有重复值,即有两个100,101等。这种情况下,将列表2合并到列表1中就叫作多对一的合并。

合并代码如下:

merge_2=pd.merge(df1,df2,on="学号")#on="学号"即是说依照学号那一列进行合并
print(merge_2)

1.2.2 多对多

多对多情况下的数据样式如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

 由上图可知,多对多即是列表1与列表2中“学号”列都有重复项。合并代码如下:

merge_3=pd.merge(df1,df2)
print(merge_3)

 合并后的表格如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

1.2.3 用on来指定多个连接键

原数据样式如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

 上面为表格1,下面为表格2(即df1和df2)

由1.2.1一处已经了解到,可以通过on="学号"来指定某个连接键,而当需要指定多个连接键时,同样也是使用on来实现。代码如下:

merge_4=pd.merge(df1,df2,on=['姓名','学号'])#语法为on=[]
print(merge_4)

合并后的列表如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

1.2.4 指定左右连接键

合并前的数据样式为:

python合并excel,python,经验分享,pandas,数据分析,pycharm

 以上为两个待拼接的表格。

当要连接的两个表之间没有公共列时(实际值一样,但列名不同),则可通过左右连接键拼接两个表。其中left_on用来指明左表的连接键的列名,right_on用来指明右表的连接键的列名。具体看如下示,代码如下:

merge_5=pd.merge(df1,df2,left_on="编号",right_on='学号')
print(merge_5)

执行代码,合并后的列表如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

1.2.5 索引当作连接键

从上面的表格数据中可以看到,其索引列为最左边的那几个数字,0,1,2,3……。但有时候我们会需要用某一列的内容作为索引列,此时可以通过以下代码将索引列替换掉:

change=df1.set_index("编号")
print(change)

转换索引列前的列表样式如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

 转换之后索引列的列表样式如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

不难发现最左边的那一列的索引有所不同。(注意:此时待合并的列表1与列表2的索引已经不同了)

接下来我们可以通过以下代码依据索引来进行列表的合并:

merge_6=pd.merge(df1,df2,left_index=True,right_index=True)
print(merge_6)

合并后的列表样式如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

1.3 连接的方式

1.3.1 内连接(inner)

内连接就是取两个表中的共同拥有的内容,而若不是共同拥有的内容的话,在内连接后形成的新的表格会将非共同拥有的内容“删除”,只保留共同拥有的内容。

合并前的两个列表样式如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

 内连接的代码如下:

merge_7=pd.merge(df1,df2,on='学号',how='inner')
print(merge_7)

 合并后的表格如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

1.3.2 左连接(left)

以左表为基础,右表往左表上拼接。当遇到左(右)表有,而右(左)表没有的内容,空缺的部分则会以NaN的方式填充。

合并前的两个列表样式如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

 合并代码如下:

merge_8=pd.merge(df1,df2,on='学号',how='left')
print(merge_8)

 合并后表格如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

1.3.3 右连接(right)

以右表为基础,左表往右表上拼接。其他与左连接同理。

1.3.4 外连接(outer)

取两个表的并集。

合并代码如下:

merge_9=pd.merge(df1,df2,on='学号',how='outer')
print(merge_9)

 合并前表格如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

合并后表格如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

二、纵向拼接

2.1 普通合并

合并前表格如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

代码如下:

merge_x=pd.concat([df1,df2])
print(merge_x)

合并后表格如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

注意:纵向拼接的concat中使用的是列表,和merge的形式有所不同。

索引设置:普通合并的方法中,合并后的表格是保留原索引的,如上图所,编号处的数字索引是重复的。而为了解决这个问题,我们通常会需要对索引进行设置。

合并代码如下:

merge_x=pd.concat([df1,df2],ignore_index=True)
print(merge_x)

合并后表格如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

通过ignore_index=True设置的拼接表格后,可以发现最左边的编号索引编程了顺序数字。

2.2 重叠数据的合并

在未处理重叠数据的合并形式下,如果两个表格中出现相同的数据内容,那么在合并后的新表格中会出现多条数据重复的情况,为解决这个问题,我们可以进行如下处理:

合并前的表格:

python合并excel,python,经验分享,pandas,数据分析,pycharm

 通过以下代码合并:

merge_y=pd.concat([df1,df2],ignore_index=True).drop_duplicates()
print(merge_y)

合并后的表格如下:

python合并excel,python,经验分享,pandas,数据分析,pycharm

此时程序会自动地将重复项合二为一。从合并前后的表格对比可知,合并前有两个“王五”的内容

,合并后两个“王五”合二为一。文章来源地址https://www.toymoban.com/news/detail-798414.html

三、整合代码

import pandas as pd

df1=pd.read_excel(r"D:\杂货\展示数据1.xlsx",sheet_name='Sheet1')
df2=pd.read_excel(r"D:\杂货\展示数据2.xlsx",sheet_name='Sheet1')
print(df1)
print(df2)

merge_1=pd.merge(df1,df2)#一般横向拼接
print(merge_1)

merge_2=pd.merge(df1,df2,on="学号")#指定连接键
print(merge_2)

merge_3=pd.merge(df1,df2)
print(merge_3)

merge_4=pd.merge(df1,df2,on=['姓名','学号'])#指定多个连接键
print(merge_4)

merge_5=pd.merge(df1,df2,left_on="编号",right_on='学号')#指定左右连接键
print(merge_5)

change=df1.set_index("编号")#重置索引
print(change)
merge_6=pd.merge(df1,df2,left_index=True,right_index=True)#依照索引拼接
print(merge_6)

merge_7=pd.merge(df1,df2,on='学号',how='inner')#内连接
print(merge_7)

merge_8=pd.merge(df1,df2,on='学号',how='left')#左连接
print(merge_8)

merge_9=pd.merge(df1,df2,on='学号',how='outer')#外连接
print(merge_9)

merge_x=pd.concat([df1,df2],ignore_index=True)#一般纵向拼接
print(merge_x)

merge_y=pd.concat([df1,df2],ignore_index=True).drop_duplicates()#纵向拼接并重置索引
print(merge_y)

到了这里,关于【Python处理EXCEL】基础操作篇3:用Python对Excel表格进行拼接合并的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python操作Excel表格的模块xlrd的简单介绍

    Python操作Excel表格的模块xlrd的简单介绍 处理数据对Python来说,比较容易,操作简单,功能强大,短短几行代码,就可处理大量的数据信息,下面介绍Python处理Excel表格的一个模块:xlrd。 一、xlrd简介及安装 xlrd是Python处理Excel表格数据的一个模块,他可以对Excel数据进行读取,

    2024年02月01日
    浏览(32)
  • python使用OpenPyXl库对Excel进行操作

    参考:知乎文章 / OpenPyXL教程 / 博客园 目录 python使用OpenPyXl库对Excel进行操作 1. 基本概念 2. 判断文件是否存在 3. 创建和打开Excel文件 3.1. 创建Excel文件 3.2. 打开已有的Excel文件 4. 储存数据 5. sheet操作 6. cell操作 在OpenPyXl中的基本改变跟Excel文件中是完全一致的。 workbook sheet c

    2024年02月01日
    浏览(49)
  • [数据分析实战]对比用Excel和Python用来做数据分析的优缺点,用Python的Pandas操作Excel数据表格原来如此简单?还不赶紧学起来?

    目录 首先,我先总结一下用Excel和Python用来做数据分析的优缺点 Excel做数据分析的优点: Excel做数据分析的缺点: Python做数据分析的优点: Python做数据分析的缺点: 1.展示本例子中使用的数据 2.开始动手 一、导入数据以及理解数据部分  1.1查看数据维度(行列) 2.2.查看数据格

    2024年02月04日
    浏览(29)
  • Python打开文件并进行处理,txt、excel、pdf、word!

    在办公处理中,我们常常要打开一些文件,面临大量的数据时,传统的人工方法耗时耗力。在python中,有一系列包装好的库,让我们能够很方便的操作各种类型的文件。当然,python的内置函数也能够很好的打开一些文件。本文主要探讨python打开各类文件的方式。本文介绍的主

    2023年04月08日
    浏览(79)
  • Python操作excel进行插入、删除行操作实例演示,利用xlwings库实现

    插入行演示采用正序遍历操作,直接使用 xlwings 提供的 sheet.api.Rows(\\\"行数\\\").Insert() 方法就能实现整行插入处理。 需要注意的是 ,如果是前插入,要避免再次检测到刚才匹配过的内容,以防循环反复插入原位置。 调整前: 处理过程: 调整后: 删除行演示采用逆序遍历操作,

    2023年04月08日
    浏览(27)
  • EXCEL表格操作

    1.带格式合并:=D6\\\"欢迎光临\\\"E6  2.带格式复制粘贴:ctrl+c 复制,选择对于单元格点击选择性粘贴:粘贴值和数字格式

    2024年02月13日
    浏览(37)
  • java处理Excel表格(EasyExcel)

    1.EasyExcel特点 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。 EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节

    2024年02月15日
    浏览(35)
  • vue 实现前端处理 “数组数据“ 转excel格式文件,并导出excel表格

    一、安装插件 XLSX 二、页面引入        希望我的愚见能够帮助你哦~,若有不足之处,还望指出,你们有更好的解决方法,欢迎大家在评论区下方留言支持,大家一起相互学习参考呀~

    2024年01月18日
    浏览(43)
  • 如何使用xlwings库创建图表及设置坐标轴标题文本内容----关于Python里xlwings库对Excel表格的操作(三十二)

    这篇小笔记主要记录如何 【如何使用“Chart类”、“Api类\\\"和“Axes函数”设置坐标轴标题文本内容】 。 前面的小笔记已整理成目录,可点链接去目录寻找所需更方便。 【目录部分内容如下】【点击此处可进入目录】 (1)如何安装导入xlwings库; (2)如何在Wps下使用xlwings中

    2024年01月22日
    浏览(49)
  • python用 xlwings库对Excel进行 字体、边框设置、合并单元格, 版本转换等操作

    xlwings 其他的一些单元格读取写入操作网上很多, 下面就写些如何设置单元格的  字体对齐,字体大小、边框, 合并单元格,  这些设置。 颜色索引: 无色 = -4142,   自动 = -4105,  黑色 = 1, 白色 = 2 ,    红色 = 3,    鲜绿 = 4, 蓝色 = 5 ,    黄色 = 6,    

    2024年02月11日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包