首页 > 编程语言 >利用Python 去重聚合Excel数据并对比两份数据的差异

利用Python 去重聚合Excel数据并对比两份数据的差异

时间:2023-09-26 20:59:00浏览次数:34  
标签:right merge Python Excel df 数据 merged

需求描述: 现在有两份Excel数据 数据结构一致 需要根据订单号和店铺名称去重聚合之后,再把两份数据合并对比差异,需要对比出两份数据的差异

import pandas as pd
import numpy as np

# 读取两个 Excel 文件
left_df = pd.read_excel('C:\\Users\\Admin\\Desktop\\数据核对\\数据1.xlsx')
right_df = pd.read_excel('C:\\Users\\Admin\\Desktop\\数据核对\\数据2.xlsx')

# 对 left_df DataFrame 进行分组求和
left_df = left_df.groupby(['店铺名称', '订单号'], as_index=False).sum()

# 对 right_df DataFrame 进行分组求和
right_df = right_df.groupby(['店铺名称', '订单号'], as_index=False).sum()

# 合并两个数据表,并启用标记列
merged_df = pd.merge(left_df, right_df, how='outer', on=['订单号', '店铺名称'], indicator=True)
# 使用 merge 函数将左右两个 DataFrame 进行合并
# how='outer' 表示执行外连接操作,包括左边有的、都有的和右边有的数据
# on=['订单号', '店铺名称'] 表示合并所依据的关键字列名是 '订单号' 和 '店铺名称'
# indicator=True 表示启用一个标记列 '_merge' 来标记每个行的来源

# 根据标记列的值,添加一个标记结果列
conditions = [
(merged_df['_merge'] == 'left_only'), # 左侧有的数据
(merged_df['_merge'] == 'both'), # 左右两边都有的数据
(merged_df['_merge'] == 'right_only') # 右侧有的数据
]
choices = ['Left only', 'Both', 'Right only']
# 对应上述条件的选择,分别为左侧有的数据、都有的数据、右侧有的数据
merged_df['merge_result'] = np.select(conditions, choices)
# 使用 np.select 函数根据条件和选择,在 DataFrame 中添加一个新列 'merge_result',标记为左侧有的数据、都有的数据或右侧有的数据

# 将结果写入到 Excel 文件中
merged_df.to_excel('merged.xlsx', index=False)
# 将合并后的结果写入到 Excel 文件 'merged.xlsx' 中,不包含索引列

 

标签:right,merge,Python,Excel,df,数据,merged
From: https://www.cnblogs.com/lcl-cn/p/17731118.html

相关文章

  • 异质数据环境下的联邦学习
        近年来,大量数据的产生和边缘设备算力的提高,以及对数据隐私的要求使得以联邦学习为代表的分布式机器学习得到研究关注。传统的联邦学习优化方法如FEDAVG由于其简单实现且具有较低的通信代价得到了广泛的应用,但是其在异质数据环境下很难取得优秀的效果。联邦学习中各客户......
  • 【Docker】使用 Docker 启动 mysql,配置挂载数据文件夹与配置文件
    #1:先创建挂载文件夹mkdir-p/mysql/config;mkdir-p/mysql/data;mkdir-p/mysql/logs#2:创建配置文件vim/mysql/config/my.cnf#3:修改权限chmod777/mysql/config/my.cnf#4:添加以下参数#event_scheduler=ON表示开启事件支持#lower_case_tabl......
  • Python 变换单词顺序组成新的一句话
    需求描述:现在给出几个单词需要不断变换单词的顺序组成新的一句话importitertoolsimportpandasaspd#定义项目列表items=['dog','apple','China','cat','pig']#生成排列,使用permutations()函数得到一个迭代器,其中包含了所有可能的排列组合。perm=list(it......
  • 大数据职业规划
    为什么报大数据?1.便宜2.随便选的简历:技能深的一个不会,浅的c++,java,python,网络初级HCIA坚持两个原则,脚踏实地,循序渐进网络工程hcia想学的东西sqlpythonflinkspark ......
  • Hive数据仓库的学习——DDL之内部表、外部表、分区表、分桶表
    1、内部表和外部表没有指定建表的类型的话,默认为内部表(InternalTable或者是ManagedTable)可以通过这行代码查看表的类型:describeformatted表名;内部表和外部表的区别以及适合使用的范围:2、分区表--避免全表扫描,提高查询效率需要注意的是,在创建分区表时,分区字段不能再作......
  • 成功实现FaceTime语音,FaceTime视频,FaceTime数据筛选,检测手机号是否开通FaceTime的
    FaceTime是苹果公司iOS和macOS(以前称MacOSX或OSX)内置的一款视频通话软件,通过Wi-Fi或者蜂窝数据接入互联网,在两个装有FaceTime的设备之间实现视频通话。其要求通话双方均具有装有FaceTime的苹果设备,苹果ID以及可接入互联网的3G/4G/5G或者Wi-Fi网络。 一、Windows电脑上部署......
  • ios 识别emoji 表情 java数据库
    INSERTintoapp_emoji(code)VALUES('0x1F603'),('0x1F604'),('0x1F601'),('0x1F606'),('0x1F979'),('0x1F605'),('0x1F602'),('0x1F923'),('0x1F972'),('0x263A'),(&......
  • Python 语法笔记
    快速入门Python(随便乱记的笔记)https://docs.python.org/zh-cn/3/tutorial/index.htmlhttps://www.runoob.com/python/python-tutorial.html输入input()函数input直接读取一整行(不允许存在空格),返回值为string类型一行中仅有一个数时,返回所输入的数字的数据类型没有空格时......
  • 关于数据结构时间复杂度和空间复杂度的问题
    数据结构与算法是计算机科学中非常重要的领域,对于程序员来说,了解数据结构和算法的时间复杂度和空间复杂度是至关重要的。时间复杂度和空间复杂度是评估算法性能的指标,可以帮助我们预估算法的执行时间和资源消耗情况。时间复杂度描述了算法执行所需的时间与输入规模之间的关系。一......
  • openGauss学习笔记-80 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT性能基
    openGauss学习笔记-80openGauss数据库管理-内存优化表MOT管理-内存表特性-MOT性能基准本节介绍了openGauss内存优化表(Memory-OptimizedTable,MOT)的MOT性能基准。80MOT性能基准我们的性能测试是基于业界和学术界通用的TPC-C基准。测试使用了BenchmarkSQL(请参见MOT样例TPC-C基......