筛选相同项

embedded/2025/2/21 7:02:33/

# import os
# import pandas as pd# # 文件路径,根据实际情况修改
# file_path_1 = r'C:\Users\Administrator\Desktop\python\文件1.xlsx'
# file_path_2 = r'C:\Users\Administrator\Desktop\python\文件2.xlsx'import os
import pandas as pd# 获取当前脚本所在的目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 将当前工作目录切换到脚本所在目录
os.chdir(script_dir)# 文件路径,根据实际情况修改
file_path_1 = '文件1.xlsx'
file_path_2 = '文件2.xlsx'# 检查文件是否存在
if not os.path.exists(file_path_1):print(f"文件 {file_path_1} 不存在,请检查路径。")
else:print(f"将读取文件: {file_path_1}")if not os.path.exists(file_path_2):print(f"文件 {file_path_2} 不存在,请检查路径。")
else:print(f"将读取文件: {file_path_2}")try:# 读取文件,指定使用 openpyxl 引擎df1 = pd.read_excel(file_path_1, engine='openpyxl')df2 = pd.read_excel(file_path_2, engine='openpyxl')# 确保 df2 的风险代码为字符串类型df2['风险代码'] = df2['风险代码'].astype(str)# 筛选出 1.xls 中风险代码前五位为 A0102 的数据df1_A0102 = df1[df1['风险代码'].str.startswith('A0102')]# 筛选出 2.xls 中风险代码以 5 开头的数据df2_start_5 = df2[df2['风险代码'].str.startswith('5')]# 合并这两部分数据并添加大类列,赋值为印章seal_df = pd.concat([df1_A0102, df2_start_5], ignore_index=True)seal_df['大类'] = '印章'# 筛选出 1.xls 中风险代码前五位为 A0202 的数据df1_A0202 = df1[df1['风险代码'].str.startswith('A0202')]# 筛选出 2.xls 中风险代码以 11 开头的数据df2_start_11 = df2[df2['风险代码'].str.startswith('11')]# 合并这两部分数据并添加大类列,赋值为客户信息customer_info_df = pd.concat([df1_A0202, df2_start_11], ignore_index=True)customer_info_df['大类'] = '客户信息'# 合并印章相关和客户信息相关的数据final_combined_df = pd.concat([seal_df, customer_info_df], ignore_index=True)# 将大类列调整到第一列cols = final_combined_df.columns.tolist()cols.insert(0, cols.pop(cols.index('大类')))final_combined_df = final_combined_df[cols]# 找出 df1 和 df2 中不在 final_combined_df 里的数据remaining_df1 = df1[~df1['风险代码'].isin(final_combined_df['风险代码'])]remaining_df2 = df2[~df2['风险代码'].isin(final_combined_df['风险代码'])]# 合并剩余数据remaining_combined_df = pd.concat([remaining_df1, remaining_df2], ignore_index=True)# 保存文件,可根据需要修改保存路径# save_path_1 = r'C:\Users\Administrator\Desktop\python\新文件1_再次全新处理_重试.xlsx'# save_path_2 = r'C:\Users\Administrator\Desktop\python\新文件2_再次全新处理_重试.xlsx'save_path_1 = '新文件1_.xlsx'save_path_2 = '新文件2_.xlsx'final_combined_df.to_excel(save_path_1, index=False)remaining_combined_df.to_excel(save_path_2, index=False)print("文件处理完成,已保存。")except Exception as e:print(f"处理过程中出现错误: {e}")

处理文件:

 
  1. 从 1..xlsx 里筛选出风险代码前五位为 A0102 的数据,从 2..xlsx里筛选出风险代码以 5 开头的数据,把这两部分数据合并,添加新列 大类 并赋值为 印章
  2. 从 1..xlsx里筛选出风险代码前五位为 A0202 的数据,从 2..xlsx里筛选出风险代码以 11 开头的数据,将它们合并,添加新列 大类 并赋值为 客户信息
  3. 把上述两类合并后的数据再次合并,同时把 大类 列调整到第一列。
  4. 把 1..xlsx和 2.xlsx 的总数据去掉前面合并的数据内容,剩余的数据保存为第二个新文件。

http://www.ppmy.cn/embedded/163506.html

相关文章

opencv实时二维码识别的一种实现与思路分享

在嵌入式平台上比如 rk3568 这种弱鸡的平台,要做到实时视频处理就非常鸡肋,不像英伟达那种 deepstrem 什么的。 开始的时候,我们使用python 下的 pyzbar + opencv opencv 读取摄像头的数据然后每帧送到 pyzbar 二维码识别函数里面进行处理,然后打印出识别的数字。结果,非常…

Python实现语音识别详细教程【2025】最新教程

文章目录 前言一、环境搭建1. 下载 Python2. 安装 Python3 使用 pip 安装必要的库 二、使用 SpeechRecognition 库进行语音识别1.识别本地音频文件2.实时语音识别3. 使用其他语音识别引擎 注意事项 前言 以下是一份较为完整的 Python 语音识别教程,涵盖环境搭建、使…

Android - Handler使用post之后,Runnable没有执行

问题:子线程创建的Handler。如果 post 之后,在Handler.removeCallbacks(run)移除了,下次再使用Handler.postDelayed(Runnable)接口或者使用post时,Runnable是没有执行。导致没有收到消息。 解决办法:只有主线程创建的…

Python中requests库

Python中requests库 flyfish Python requests 库概述 1. 简介 什么是requests? requests是一个简单易用的HTTP库,用于发送所有类型的HTTP请求。它简化了与Web服务的交互,支持复杂的操作如会话维持、文件上传等。 安装requests pip instal…

Mongo导入导出详解

一、二进制导入导出&#xff08;推荐&#xff09; 适用场景&#xff1a;全量备份/恢复&#xff0c;保留索引和元数据 工具&#xff1a;mongodump 和 mongorestore 1. 导出数据 (mongodump) mongodump --host <hostname> --port <port> \--username <username…

uniapp 支付宝小程序自定义顶部导航栏

我是用的是uniapp 的 uni-nav-bar 组件 根据项目需求配置即可 <uni-nav-bar v-if"title" :left-icon"leftIcon" :title"title" :statusBar"true" :fixed"true" clickLeft"goBack":border"false" :ba…

跳表的C语言实现

跳表&#xff08;Skip List&#xff09;是一种基于链表的动态数据结构&#xff0c;用于实现高效的查找、插入和删除操作。它通过引入多级索引来加速查找过程&#xff0c;类似于多级索引的有序链表。跳表的平均时间复杂度为 O(logn)&#xff0c;在某些场景下可以替代平衡树。 以…

前端【技术方案】重构项目

1. 明确重构目标 优化性能 减少页面加载时间降低资源占用 提升代码可维护性 更规范的代码风格更清晰的代码结构更明确的模块设计 扩展功能 为项目添加新功能改进现有功能 2. 评估项目现状 审查代码 全面检查现有代码&#xff0c;找出代码中的问题&#xff0c;如代码冗余、耦合…