当前位置: 首页 > news >正文

Python 使用pandas库实现Excel字典码表对照自动化处理

效果演示

对照前(紊乱数据)

对照后(一一对应)

Python代码示例

# !/usr/bin/env python
# -*- coding:utf-8 -*-
"""
Creator: wcw
Date: 2025/7/29
Description: 字典对照自动化处理
"""
import os
import pandas as pdclass PDExcel(object):def __init__(self):pass@classmethoddef compa_excel(cls, dir_path, file_name, fillna_code="", fillna_name=""):"""将未对照的Excel数据进行对照处理,将结果输出到新的sheet中:param file_name:Excel文件名:param fillna_code:空值编码默认值:param fillna_name:空值名称默认值:return:"""# 读取Excel表数据print("开始读取Excel文件...")file_path = os.path.join(dir_path, file_name)sheet_data = pd.read_excel(io=file_path,sheet_name="SheetJS (2)",header=0,skiprows=0,dtype=str)print("读取Excel文件完成.")# 分别提取HIS字典和第三方字典内容his_data = sheet_data.loc[:, ["字典名称", "字典描述", "HIS字典代码", "HIS字典描述"]]vender_data = sheet_data.loc[:, ["第三方字典代码", "第三方字典描述"]]# print(his_data.at[0, "HIS字典代码"])# print(vender_data.get("第三方字典代码"))# 初始化对照前的字典数据columns = ["字典名称", "字典描述", "HIS字典代码", "HIS字典描述", "第三方字典代码", "第三方字典描述"]new_df = pd.DataFrame(data=None, columns=columns, dtype=str)new_df = pd.concat([new_df, his_data])# print(new_df)# 检索判断、对照处理print("处理对照中,请耐心等待...")for new_row in new_df.itertuples():# print(new_row)for vender_row in vender_data.itertuples():# if new_row.HIS字典描述 == vender_row.第三方字典描述:     # 精准匹配if str(new_row.HIS字典描述).find(str(vender_row.第三方字典描述)) != -1:    # 模糊匹配new_df.at[new_row.Index, "第三方字典代码"] = vender_row.第三方字典代码new_df.at[new_row.Index, "第三方字典描述"] = vender_row.第三方字典描述if pd.isna(new_df.at[new_row.Index, "HIS字典代码"]):new_df.drop(index=new_row.Index, inplace=True)  # inplace=True,修改原数据# 处理对照失败的默认值new_df.fillna({"第三方字典代码": fillna_code, "第三方字典描述": fillna_name}, inplace=True)# 得到对照后的字典数据print(new_df)print("处理对照完成.")# 修改原Excel数据print("开始输出到Excel...")new_df = new_df.astype(str)     # 指定数据类型,防止Excel自动转换# 使用ExcelWriter,可以在原Excel中新增sheet表,if_sheet_exists若sheet表存在的处理方式(overlay:直接覆盖内容保留原格式,replace:直接替换同名工作表‌‌)with pd.ExcelWriter(file_path, engine='openpyxl', mode='a', if_sheet_exists="overlay") as writer:new_df.to_excel(writer, sheet_name="SheetJS", columns=columns, index=False)  # index 是否写入行索引print("输出到Excel完成.")if __name__ == '__main__':# 运行方法print("程序已启动...")dir_path = r"D:\PythonDemo\字典手工对照"file_name = "7 微ESB字典手工对照-家庭关系代码表.xlsx"fillna_code = "99"fillna_name = "非亲属"PDExcel.compa_excel(dir_path, file_name, fillna_code, fillna_name)print("程序结束.")

 此毕。转载请注明出处。

http://www.lryc.cn/news/604703.html

相关文章:

  • C++:STL中list的使用和模拟实现
  • 《C++二叉搜索树原理剖析:从原理到高效实现教学》
  • CH347使用笔记:CH347作为FPGA下载器的几种方式
  • 大语言模型API付费?
  • 【PZ7020-StarLite 入门级开发板】——FPGA 开发的理想起点,入门与工业场景的双重优选
  • PyTorch API
  • PyTorch 生态四件套:从图片、视频到文本、语音的“开箱即用”实践笔记
  • 汽车电子控制系统开发的整体安全理念
  • 为什么网站需要高防IP?高防IP的优势是什么?
  • 打造高效、安全的期货资管交易平台:开发流程与关键要素解析
  • 企业级应用安全传输:Vue3+Nest.js AES加密方案设计与实现
  • 开发避坑短篇(9):解决升级Vue3后slot attributes废弃警告
  • 从黑箱到理解模型为什么(模型可解释性与特征重要性分析)
  • 力扣54:螺旋矩阵
  • git rebase 操作记录
  • 《Java 程序设计》第 11 章 - 泛型与集合
  • chukonu阅读笔记(2)
  • 【LY88】双系统指南及避坑
  • 阿里云AI代码助手通义灵码开发指导
  • 【读书笔记】设计数据密集型应用 DDIA 第三章:存储与检索
  • OPCap:Object-aware Prompting Captioning
  • PHP/Java/Python实现:如何有效防止恶意文件上传
  • 【Qt开发】信号与槽(三)-> 自定义信号和槽
  • <RT1176系列13>LWIP概念介绍
  • 游戏盾是如何做到免疫攻击的
  • Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
  • 离线录像文件视频AI分析解决方案
  • android 性能优化
  • 密码学安全性简介
  • 深入浅出:在 Spring Boot 中构建实时应用 - 全面掌握 WebSocket