Python3,使用openpyxl进行excel数据对比,反手一个赞。

2023-11-15

1、引言

小屌丝:鱼哥,我最近在对搞数据对比,你有什么便捷的方法?
小鱼:斗胆问一句,数据量多少?
小屌丝:不多不多,几万条吧。
小鱼:确定几万条?
小屌丝:多了也不敢说啊。
小鱼:但说无妨
小屌丝:那这是你说的哈, 有一组数据是890W条数据
小鱼:奈斯,真棒,完美,超爽。
小屌丝:你很兴奋啊。
小鱼:不啊,我就喜欢看你被虐的样子。
小屌丝:别闹, 正儿八经的,相对比数据。
小鱼:好吧,那你说下,你想如何对比?
小屌丝:openpyxl怎么能先对比一列,然后根据这列为基准去对比该行?
小鱼:真棒,我会,但是我不想说
小屌丝:最近咱俩是不是没去洗澡了。
小鱼:额… 你有门票?
小屌丝:你告诉我怎么实现,我就有门票。
小鱼:君子一言。
小屌丝:澡堂见。
在这里插入图片描述

2、代码实战

2.1 安装

当然,涉及到第三方库, 老规矩,安装走起。

pip install openpyxl

然后就是等待着安装。

其它安装方式,直接看这两篇:

安装完成,我们就可以进行代码编写了。

2.2 代码实战

2.2.1 思路

在写代码前,我们要捋清楚思路, 总共分四步:

  • 1、读取excel表格数据,并将数据保存在一个列表中。
  • 2、调用 merge_cells 函数,将需要对比的两列数据作为参数传入,并设置参数 merge_cells 为 True,表示要对齐两列数据。
  • 3、循环遍历列表中的每一行数据,对比该行与对齐列的数据是否一致,如果不一致则记录下来。
  • 4、循环结束后,找到记录中不一致的行,将不一致的数据用新列表的形式保存起来即可。

捋清思路后,我们就开始下一步操作:撸代码。

2.2.2 代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-05-25
# @Author : Carl_DJ

'''
实现功能:
	使用openpyxl对excel表中的数据进行对比
'''
import openpyxl

# 读取excel表格数据,并将数据保存在一个列表中
data = []
with openpyxl.load_workbook('example.xlsx') as wb:
    sheet = wb['Sheet1']
    for row in sheet.iter_rows(min_row=2, values_only=True):
        row_data = []
        for cell in row:
            if cell.value is not None:
                row_data.append(cell.value)
        data.append(row_data)

# 对比需要对齐的两列数据
merged_data = []
for row_data in data:
    # 设置参数,两列数据对齐
    merge_cells = True
    for col_idx in range(len(row_data[0])):
        col_data = row_data[col_idx]
        for col_idx_2 in range(len(col_data)):
            if col_data[col_idx_2] != col_data[col_idx_2 + 1]:
                merge_cells = False
                break
    if merge_cells:
        # 循环遍历列表中的每一行数据,对比该行与对齐列的数据是否一致
        for cell_idx in range(len(col_data)):
            cell_data = col_data[cell_idx]
            for row_idx in range(len(merged_data)):
                if cell_data == merged_data[row_idx][cell_idx]:
                    # 如果一致,则将不一致的数据用新列表的形式保存起来
                    merged_data[row_idx][cell_idx] = [cell_data]
                    break

3、总结

今天主要使用openpyxl对excel表中的数据进行对比。
在实际的工作中,这种数据对比很常见,用好python,让你的工作量递减。
我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO 博客专家
  • 51认证讲师
  • 认证金牌面试官
  • 职场面试培训规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)测评一、二等奖获得者

关注我,带你学习更多更有趣的Python知识。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python3,使用openpyxl进行excel数据对比,反手一个赞。 的相关文章

  • 最小二乘法拟合直线 python 代码

    我有一个由 X 和 Y 坐标组成的散点图 我想使用直线的最小二乘拟合来获得最佳拟合线 直线最小二乘拟合是指 如果 x 1 y 1 x n y n 是测量数据对 则最佳直线是y A Bx 这是我的Python代码 number of poin
  • Tipfy:如何在模板中显示blob?

    鉴于在 gae 上使用tipfy http www tipfy org python 以下模型 greeting avatar db Blob avatar 显示 blob 此处为图像 的模板标签是什么 在这种情况下 斑点是一个图像 这很棒
  • 使用 pandas 将字符串对象转换为 int/float

    import pandas as pd path1 home supertramp Desktop 100 life 180 data csv mydf pd read csv path1 numcigar Never 0 1 5 Ciga
  • 在 VBA 中循环合并单元格

    是否可以循环遍历合并的单元格vba questions tagged vba 我的范围内有 6 个合并单元格B4 B40 我只需要这 6 个单元格中的值 6 次迭代 上面的答案看起来已经让你排序了 如果您不知道合并的单元格在哪里 那么您可以
  • numpy:大量线段/点的快速规则间隔平均值

    我沿着一维线有许多 约 100 万个 不规则间隔的点 P 这些标记线段 这样 如果点是 0 x a x b x c x d 则线段从 0 gt x a x a gt x b x b gt x c x c gt x d 等 我还有每个段的 y
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • PyArmor - 打包为一个可执行文件

    当我执行此命令时 您好 使用 PyArmor pyarmor pack main py 它将它打包到一个名为的文件夹中dist里面包含我的 exe 以及许多 Python 扩展文件 据我所知 PyArmor 使用 PyInstaller 来
  • 根据第三个变量更改散点图中的标记样式

    我正在处理多列字典 我想绘制两列 然后根据第三列和第四列更改标记的颜色和样式 我很难改变 pylab 散点图中的标记样式 我的方法适用于颜色 不幸的是不适用于标记样式 x 1 2 3 4 5 6 y 1 3 4 5 6 7 m k l l
  • Jupyter Notebook 中的深色模式绘图 - Python

    我正在使用 Jupyter Notebook 目前正在使用 JupyterThemes 的深色日光主题 我注意到我的绘图不是处于黑暗模式 并且文本仍然是黑色并且在日光照射的背景上无法读取 JupyterThemes 的自述文件建议在 ipy
  • 在seaborn中对箱线图x轴进行排序

    我的数据框round data看起来像这样 error username task path 0 0 02 n49vq14uhvy93i5uw33tf7s1ei07vngozrzlsr6q6cnh8w 39 png 1 0 10 n49vq
  • 字典、集合和数组的比较

    我正在尝试找出字典与集合和数组相比的相对优点和功能 我发现了一篇很棒的文章here http www experts exchange com articles 3391 Using the Dictionary Class in VBA
  • 具有多个主键的 SQLAlchemy 不会自动设置任何

    我有一个简单的表 class test Base tablename test id Column Integer primary key True title Column String def init self title self
  • 线性同余生成器 - 如何选择种子和统计检验

    我需要做一个线性同余生成器 它将成功通过所选的统计测试 我的问题是 如何正确选择发电机的数字以及 我应该选择哪些统计检验 我想 均匀性的卡方频率测试 每代收集10 000个号码的方法 将 0 1 细分为10个相等的细分 柯尔莫哥洛夫 斯米尔
  • 计算 pyspark df 列中子字符串列表的出现次数

    我想计算子字符串列表的出现次数 并根据 pyspark df 中包含长字符串的列创建一个列 Input ID History 1 USA UK IND DEN MAL SWE AUS 2 USA UK PAK NOR 3 NOR NZE 4
  • 如何使用 os.chdir 转到减去最后一步的路径?

    例如 一个方法传递了一个路径作为参数 这个路径可能是 C a b c d 如果我想使用 os chdir 更改为 C a b 怎么办 c 没有最后一个文件夹 os chdir 可以接受 命令吗 os chdir 可以采取 作为论点 是的 然
  • 在 HDF5 (PyTables) 中存储 numpy 稀疏矩阵

    我在使用 PyTables 存储 numpy csr matrix 时遇到问题 我收到此错误 TypeError objects of type csr matrix are not supported in this context so
  • 更新 SQLAlchemy 中的特定行

    我将 SQLAlchemy 与 python 一起使用 我想更新表中等于此查询的特定行 UPDATE User SET name user WHERE id 3 我通过 sql alchemy 编写了这段代码 但它不起作用 session
  • 如何在Tensorflow中保存估计器以供以后使用?

    我按照教程 TF Layers 指南 构建卷积神经网络 以下是代码 https github com tensorflow tensorflow blob r1 1 tensorflow examples tutorials layers
  • Streamlabs API 405 响应代码

    我正在尝试使用Streamlabs API https dev streamlabs com Streamlabs API 使用 Oauth2 来创建应用程序 因此 首先我将使用我的应用程序的用户发送到一个授权链接 其中包含我的应用程序的客
  • 在python中对列表列表执行行总和和列总和

    我想用python计算矩阵的行和和列和 但是 由于信息安全要求 我无法使用任何外部库 因此 为了创建矩阵 我使用了列表列表 如下所示 matrix 0 for x in range 5 for y in range 5 for pos in

随机推荐

  • 惊呆!博主居然教粉丝爬虫爬取自己的文章

    三年前随便写的草稿忘记发布了 今天重新水一下 不知道还好用不 改天试跑一下 大概就是通过etree的方式采集页面的文章列表 然后遍历一下存储成markdown文件 PS 之前发的很多文章在各种公众号和CSDN博客中被搬运 其实也是爬虫我们的
  • Python+Selenium练习篇之31-获取页面元素的href属性

    本文来介绍如何通过Selenium获取页面元素的某一个属性 一个元素可能有多个属性 例如 class id name text href vale等等 这里我们举例一个爬虫中经常需要处理的链接问题 找出当前页面所有的超链接 已百度首页为例
  • 目标检测mAp

    目标检测的mAp的计算是根据不同的IoU下的对应的recall和precision计算得到
  • 开源库Simd在vs2010中的编译及简单使用

    Simd是开源的图像处理库 它提供了很多高性能的算法 这些优化算法主要由SIMD指令来实现 包括SSE SSE2 SSSE3 SSE4 1 SSE4 2 AVX等 此库可以应用在windows linux 32bit 64bit等系统中 此
  • 网站应用前后端分离实现微信扫码登录

    1 前期在微信开发者中心申请应用 配置好回调地址 2 前端实现扫码 扫码后微信那边会将code和state state前端传什么微信那边返回就是什么 拼接到回调地址后 3 后端根据回调地址 接口 向微信请求获取accessToken和ope
  • react合成事件+底层原理+发展历程

    React中的合成事件 合成事件是围绕浏览器原生事件 充当跨浏览器包装器的对象 它们将不同浏览器的行为合并为一个API 这样做是为了确保事件在不同浏览器中显示一致的属性 保证兼容性 合成事件的基本操作 基础语法 在JSX元素上 直接基于on
  • 【原创】CSDN·Markdown·KaTex/LaTex 用法小全

    Index KaTex 区分LaTex和KaTex 一 如何插入公式 分类 行中公式 独立公式 注意 二 关于 text 与operatorname 三 在公式中进行 你怎么穿着品如的衣服 操作 1 上下移 2 字符变大变小 3 各种字体
  • 畅言普通话软件测试准确率高吗,畅言普通话测试准确吗?畅言普通话准确度介绍...

    畅言普通话是一款专门为大家提供普通话测试和练习的软件 如果大家对考普通话没有什么信心 也不知道自己什么水平 那就可以上畅言普通话上测试 很多人都不知道畅言普通话测试是不是准确的 下面小编就为大家详细的介绍一下畅言普通话app 让大家更加了解
  • Python 日期时间格式化输出,带年、月、日、时、分、秒

    使用time模块 输出格式化日期时间字符串 import time date str time strftime Y m d H M S time localtime print date str 输出当前时间如下 2022 01 03 1
  • 计算机操作员试题集2010版第七章,计算机系统操作师(中级)试题集(Office 2010版)...

    计算机系统操作师 中级 试题集 Office 2010版 依据 计算机操作员职业标准 编写 内容包括文字设置与编排 表格的基本操作 版面设置与图文混排 工作簿的基本操作 数据处理 办公软件综合应用 演示文稿的制作和Smart Art的制作
  • MATLAB机器学习系列-8 极限学习机(Extreme Learning Machine, ELM)原理及其代码实现

    极限学习机 Extreme Learning Machine ELM 极限学习机网络结构和BP网络结构类似 和BP神经网络不同点 极限学习机输入层到隐含层的权重W是可以随意指定的 BP神经网络W层需要在学习时进行调整 而极限学习机不需要调整
  • 将文本按指定数量字符分割

    最近搞了电网的I1协议 其中涉及图片数据 包比较大 分了20包 每包5K大小 远程写的解析代码 没有连接真实设备测试 所以要了一些报文 奈何报文全是16进制字符紧挨在一起 没有合适的分割工具 只好自己写个了 工具功能 将文本按指定数量字符分
  • 提供下载地址的情感数据库大全(涵盖音视频生理图像文本)

    情感识别数据集大全 一 公开多模态数据集 1 MIT BIH 2 Aubt 3 Multi ZOL 4 SAVEE 5 eNTERFACE05 二 文本情感数据集 1 Stanford Twitter Sentiment STS 2 Ama
  • 第十四章 Spring CLoud+Hystrix+Ribbon+commandProperties 信号量隔离

    传播安全上下文或使用Spring范围 首先 当大多数人在使用Tomcat时 多个HTTP服务会共享一个线程池 假设其中一个HTTP服务访问的数据库响应非常慢 这将造成服务响应时间延迟增加 大多数线程阻塞等待数据响应返回 导致整个Tomcat
  • 北京时间与UTC时间转换

    UTC时间也称为世界标准时间 或协调世界时 英语 Coordinated Universal Time 北京时间是东八区 领先UTC 8个小时 UTC 时区差 本地时间 时区差东为正 西为负 即 北京时间 UTC时间 8小时 我们转化时主要
  • 查看Linux磁盘空间

    在 Linux 系统中 可以使用以下命令来查看磁盘空间的使用情况 1 df 命令 df h 该命令会列出当前系统所有挂载的文件系统以及它们的使用情况 包括总容量 已用空间 可用空间 使用百分比等信息 2 du 命令 du sh path t
  • 【金三银四】Spring Cloud面试题(2021最新版)

    目录 前言 一 什么是微服务架构 1 什么是微服务架构 2 为什么需要学习Spring Cloud 3 Spring Cloud 是什么 4 SpringCloud的优缺点 5 SpringBoot和SpringCloud的区别 6 Spr
  • WPS 配置MathType

    注 先找到 自己安装的 MathType 和 WPS 的安装目录 最简单的方式就找到快捷方式查看 目标 以我为例我的安装软件是32位 1 进入 MathType 目录 在 MathPage 和 Office Support目录下找到对应 位
  • stm32相关知识笔记

    keil公司是为51 arm芯片提供软件开发IDE的公司 2005年被ARM收购 Keil MDK ARM是美国Keil软件公司 现已被ARM公司收购 出品的支持ARM微控制器的一款IDE 集成开发环境 MDK ARM包含了工业标准的Kei
  • Python3,使用openpyxl进行excel数据对比,反手一个赞。

    openpyxl技能 1 引言 2 代码实战 2 1 安装 2 2 代码实战 2 2 1 思路 2 2 2 代码示例 3 总结 1 引言 小屌丝 鱼哥 我最近在对搞数据对比 你有什么便捷的方法 小鱼 斗胆问一句 数据量多少 小屌丝 不多不多