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

Excel文件处理excel内容

针对这个Excel文件处理需求,请输出一个Python脚本:根据Excel文档内容,输出一个新的Excel,按每个sheet一样的命名新Excel的sheet,每个sheet里的内容与原Excel的对应关系如下:登陆账号=‘经办人司库账号’或‘审核人司库号’;用户名称=‘经办人名称’或‘审核人名称’;所属组织编码=‘单位编号’;所属角色编码=经办人填充0002,审核人填充0004;注意统一登录账号的经办人或者审核人会存在多个组织或角色中,则所属组织编码、所属角色编码用逗号隔离罗列在同一账号姓名人员里即可。

import pandas as pddef process_sheet(df, sheet_name, output_writer):# 添加新的列df['所属组织编码'] = df['单位编码']df['所属角色编码'] = None# 将经办人和审核人的信息合并到同一个 DataFrame 中if '审核人司库号' in df.columns and '审核人名称' in df.columns:df['审核人司库号'].fillna('', inplace=True)df['审核人名称'].fillna('', inplace=True)df = pd.concat([df, df[['审核人司库号', '审核人名称', '单位编码']].rename(columns={'审核人司库号': '经办人司库账号', '审核人名称': '经办人名称'})], ignore_index=True)# 根据经办人账号分组grouped = df.groupby('经办人司库账号')# 创建一个新的 DataFrame 来存储结果result_df = []for account, group in grouped:# 对于每个账号,获取唯一的姓名name = group['经办人名称'].iloc[0]# 获取所有相关的单位编码和角色编码org_codes = group['单位编码'].unique()role_codes = ['0002'] * len(org_codes)  # 经办人角色编码# 如果有审核人的信息,添加审核人的角色编码if '审核人司库号' in df.columns:role_codes += ['0004'] * len(org_codes)  # 审核人角色编码# 合并组织编码和角色编码org_code_str = ','.join(map(str, org_codes))role_code_str = ','.join(map(str, role_codes))# 添加一行到结果 DataFrameresult_df.append({'登陆账号': account,'用户名称': name,'所属组织编码': org_code_str,'所属角色编码': role_code_str})# 将结果转换为 DataFrameresult_df = pd.DataFrame(result_df)# 写入新的 Excel 文件result_df.to_excel(output_writer, sheet_name=sheet_name, index=False)def process_excel(input_file, output_file):# 读取原始 Excel 文件excel = pd.ExcelFile(input_file)# 创建 ExcelWriter 对象用于写入结果with pd.ExcelWriter(output_file, engine='openpyxl') as writer:for sheet_name in excel.sheet_names:df = pd.read_excel(input_file, sheet_name=sheet_name)process_sheet(df, sheet_name, writer)# 指定输入和输出文件路径
input_file = 'D:\\input.xlsx'  # 原始文件路径
output_file = 'D:\\processed_data.xlsx'  # 输出文件路径# 执行处理
process_excel(input_file, output_file)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • FastAPI技巧
  • HTML-03.新浪新闻-标题-样式2
  • Arco Design 之Table表格
  • 【医学影像】无痛安装mamba
  • 字节实习面试
  • 【Qt】如何搭建Qt开发环境
  • C# Deconstruct详解
  • 安卓App开发 篇一:从零开始构建第一个Android应用
  • Java 抽象知识笔记总结(油管)
  • C++:模板初阶与STL简介
  • RabbitMQ 什么语言写的
  • 6 大推荐给开发者的无代码工具
  • Linux驱动开发—设备树传递给内核,匹配驱动过程分析
  • Java多线程-----定时器(Timer)及其实现
  • C++ 异常
  • Angularjs之国际化
  • C学习-枚举(九)
  • Docker入门(二) - Dockerfile
  • JavaWeb(学习笔记二)
  • Laravel5.4 Queues队列学习
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • V4L2视频输入框架概述
  • vue-cli3搭建项目
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 从零开始的无人驾驶 1
  • 第2章 网络文档
  • 如何用vue打造一个移动端音乐播放器
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • ​flutter 代码混淆
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ​字​节​一​面​
  • ######## golang各章节终篇索引 ########
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (12)Linux 常见的三种进程状态
  • (二十六)Java 数据结构
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (十一)图像的罗伯特梯度锐化
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (转)setTimeout 和 setInterval 的区别
  • .Net 6.0 处理跨域的方式
  • .net 按比例显示图片的缩略图
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .Net中的集合
  • ??在JSP中,java和JavaScript如何交互?
  • @Autowired和@Resource装配
  • @FeignClient注解,fallback和fallbackFactory
  • @SpringBootConfiguration重复加载报错
  • [24年新算法]NRBO-XGBoost回归+交叉验证基于牛顿拉夫逊优化算法-XGBoost多变量回归预测
  • [AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [C#]将opencvsharp的Mat对象转成onnxruntime的inputtensor的3种方法