如何使用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

表格2

接着将这两个表格的数据分别导入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库的安装在前章我已有介绍,不再赘述,请转至:

使用Python处理EXCEL基础操作篇1在Python中导入EXCEL数据

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

使用Python处理EXCEL基础操作篇2Python对EXCEL数据的预处理

一、横向拼接

1.1 一般拼接

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

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

合并代码如下:

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

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

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

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

1.2.1 多对一

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

可以看到,上面为列表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 多对多

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

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

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

合并后的表格如下:

1.2.3 用on来指定多个连接键

原数据样式如下:

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

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

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

合并后的列表如下:

1.2.4 指定左右连接键

合并前的数据样式为:

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

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

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

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

1.2.5 索引当作连接键

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

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

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

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

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

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

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

合并后的列表样式如下:

1.3 连接的方式

1.3.1 内连接(inner)

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

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

内连接的代码如下:

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

合并后的表格如下:

1.3.2 左连接(left)

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

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

合并代码如下:

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

合并后表格如下:

1.3.3 右连接(right)

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

1.3.4 外连接(outer)

取两个表的并集。

合并代码如下:

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

合并前表格如下:

合并后表格如下:

二、纵向拼接

2.1 普通合并

合并前表格如下:

代码如下:

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

合并后表格如下:

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

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

合并代码如下:

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

合并后表格如下:

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

2.2 重叠数据的合并

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

合并前的表格:

通过以下代码合并:

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

合并后的表格如下:

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

三、整合代码

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表格进行拼接合并的文章就介绍到这了,更多相关Python处理EXCEL内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用Python对EXCEL数据的预处理

    一.熟悉数据 我们将EXCEL中的数据导入之后,需要对数据进行大致性的了解,当对数据充分地了解之后,才便于后期的分析工作. 该部分涉及到四个基本方法,分别为“shape”“info”“head”“describe”.下面会具体介绍四者的用法与功能. 以下是我准备好的一组简单的excel数据: 其中:“编号”“姓名”“识别码”“时间”称为索引列:左边的“1”“2”···“6”称为索引行. 通过第一篇的方法,将数据导入python中.代码与输出结果如下所示: import pandas as pd

  • 如何在Python中导入EXCEL数据

    目录 一.前期准备 二.编写代码基本思路 三.编写代码读取数据 3.1 3.2 四.结语 一.前期准备 此篇使用两种导入excel数据的方式,形式上有差别,但两者的根本方法实际上是一样的. 首先需要安装两个模块,一个是pandas,另一个是xlrd. 在顶部菜单栏中点击文件,再点击设置,然后在设置中找到以下界面,并点击“+”号. 然后会出现以下界面,在搜索框中分别搜索以上两个模块:pandas/xlrd. 选中搜索出来的模块,并点击左下角的的安装按钮,便可将模块安装到自己电脑中. 需要注意的是,

  • Python Excel数据处理之xlrd/xlwt/xlutils模块详解

    目录 1.模块说明 2.xlrd处理 3.xlwt处理 4.xlutils处理 常规的Excel数据处理中,就是对Excel数据文件的读/写/文件对象操作. 通过对应的python非标准库xlrd/xlwt/xlutils,来实现具体的数据处理业务逻辑. 在复杂的Excel业务数据处理中,三兄弟扮演的角色缺一不可.如何能够使用xlrd/xlwt/xlutils三个模块来实现数据处理就是今天的内容. 1.模块说明 使用该三个模块来处理Excel数据最好的地方就是他们和Excel文件对象对应的数据处

  • Python+Requests+PyTest+Excel+Allure 接口自动化测试实战

    Unittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像JUnit是Java语言的标准单元测试框架一样,Unittest则是Python语言的标准单元测试框架. Pytest是Python的另一个第三方单元测试库.它的目的是让单元测试变得更容易,并且也能扩展到支持应用层面复杂的功能测试. 两者对比: Pytest项目实战: 第一步.搭建项目框架(创建Gwyc_Api_Script_Pytest项目目录) 依次创建子目录如下:base:存放一些最底

  • 14个Python处理Excel的常用操作分享

    目录 一.关联公式:Vlookup 二.数据透视表 三.对比两列差异 四.去除重复值 五.缺失值处理 六.多条件筛选 七. 模糊筛选数据 八.分类汇总 九.条件计算 十.删除数据间的空格 十一.数据分列 十二.异常值替换 十三.分组 十四.根据业务逻辑定义标签 自从学了Python后就逼迫用Python来处理Excel,所有操作用Python实现.目的是巩固Python,与增强数据处理能力. 这也是我写这篇文章的初衷.废话不说了,直接进入正题. 数据是网上找到的销售数据,长这样: 一.关联公式:

  • 如何使用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 重叠数据的合并 三.整合代码 准备工作 我准备了两个表格数据,以此

  • 使用python对excel表格处理的一些小功能

    python对excel表格处理的一些小功能 功能概览pandas库的一些应用文件读入计算表格中每一行的英文单词数简单用textblob进行自然语言情感分析判断一行中是不是有两列值都与其他行重复(可推广至多列)对表格中的两列自定义函数运算判断表格中某列中是否有空对表格某列中时间格式的修正运用matplotlib画时间序列图,重叠图 功能概览 做数模模拟赛时学到的一些对表格处理的知识,为了方便自己以后查找,遂写成一篇文章,也希望能帮助大家:) pandas库的一些应用 文件读入 代码如下,每一句后

  • python读取Excel表格文件的方法

    python读取Excel表格文件,例如获取这个文件的数据 python读取Excel表格文件,需要如下步骤: 1.安装Excel读取数据的库-----xlrd 直接pip install xlrd安装xlrd库 #引入Excel库的xlrd import xlrd 2.获取Excel文件的位置并且读取进来 #导入需要读取Excel表格的路径 data = xlrd.open_workbook(r'C:\Users\NHT\Desktop\Data\\test1.xlsx') table = d

  • 使用Python处理Excel表格的简单方法

    Excel 中的每一个单元,都会有这些属性:颜色(colors).number formatting.字体(fonts).边界(borders).alignment.模式(patterns) 等等. xlsxwriter 格式处理,将待添加数据转换成相应的格式,添加到 xlsx 文件中 总结 以上所述是小编给大家介绍的使用Python处理Excel表格的简单方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持!

  • Python读取Excel表格,并同时画折线图和柱状图的方法

    今日给大家分享一个Python读取Excel表格,同时采用表格中的数值画图柱状图和折线图,这里只需要几行代码便可以实. 首先我们需要安装一个Excel操作的库xlrd,这个很简单,在安装Python后直接在DOS命令下输入pip install xlrd,便可以安装成功,如果还是不行,就输入Python -m pip install xlrd.后面会附上完整的代码和截图: 这行代码就是读取本地Excel文件的: data = xlrd.open_workbook(r'C:\\Users\\ASU

  • python读写Excel表格的实例代码(简单实用)

    安装两个库:pip install xlrd.pip install xlwt 1.python读excel--xlrd 2.python写excel--xlwt 1.读excel数据,包括日期等数据 #coding=utf-8 import xlrd import datetime from datetime import date def read_excel(): #打开文件 wb = xlrd.open_workbook(r'test.xlsx') #获取所有sheet的名字 print

  • 如何用python处理excel表格

    openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装. 读取Excel文件 需要导入相关函数 from openpyxl import load_workbook # 默认可读写,若有需要可以指定write_only和read_only为True wb = load_workbook('pythontab.xlsx') 默认打开的文件为可读写,若有需要可以指定参数read_only为True. 获取工作表--Sheet # 获得所有s

  • python 删除excel表格重复行,数据预处理操作

    使用python删除excel表格重复行. # 导入pandas包并重命名为pd import pandas as pd # 读取Excel中Sheet1中的数据 data = pd.DataFrame(pd.read_excel('test.xls', 'Sheet1')) # 查看读取数据内容 print(data) # 查看是否有重复行 re_row = data.duplicated() print(re_row) # 查看去除重复行的数据 no_re_row = data.drop_d

  • python 操作excel表格的方法

    说明:由于公司oa暂缺,人事妹子在做考勤的时候,需要通过几个excel表格去交叉比对员工是否有旷工或迟到,工作量大而且容易出错. 这时候it屌丝的机会来啦,花了一天时间给妹子撸了一个自动化脚本. 1. 下载相关python包 python操作excel表格可以使用以下三个包 xlrd - 读excel文件 xlwt - 写excel文件,这个不能修改已有的excel文件,只能写新的文件 xlutils - 修改excel文件,其实就是通过xlrd拷贝一份记录,再进行修改.保存为老的名字就替换了原

  • Python读写Excel表格的方法

    本文实例为大家分享了Python读写Excel表格的具体代码,供大家参考,具体内容如下 python读取Excel表格: import xlrd def read_excel(): # 打开文件 wb = xlrd.open_workbook(r'test.xls') # 获取所有sheet的名字 print(wb.sheet_names()) # 获取第二个sheet的表名 sheet2 = wb.sheet_names()[1] print("sheet2 = {}".format

随机推荐