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

筛选相同项

# 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 的总数据去掉前面合并的数据内容,剩余的数据保存为第二个新文件。

相关文章:

  • 深入解析TCP/IP协议:从理论到实践的全链路剖析
  • Pytorch论文实现之GAN-C约束鉴别器训练自己的数据集
  • 机器学习的数学基础(三)——概率与信息论
  • SP字体UI放大代码
  • ComfyUI的安装
  • 基于Electron+Vue3创建桌面应用
  • C语言.h头文件的写法
  • 物联网技术赋能预测性维护的深度剖析与前景展望
  • 华为FusionCompute虚拟化平台
  • MacOS 15.3 卸载系统内置软件
  • 微信小程序---计划时钟设计与实现
  • 网络安全三件套
  • 【深度学习】Transformer入门:通俗易懂的介绍
  • 《仙台有树》里的馅料(序)
  • leetcode:942. 增减字符串匹配(python3解法)
  • 使用 DeepSeek + 语音转文字工具 实现会议整理
  • GO语言的安装以及第一个Go语言程序
  • 国鑫DeepSeek 671B本地部署方案:以高精度、高性价比重塑AI推理新标杆
  • 7.【线性代数】——求解Ax=0,主列和自由列
  • 音频采集(VUE3+JAVA)
  • 甘怀真:天下是神域,不是全世界
  • 李云泽:支持小微企业、民企融资一揽子政策将从增供给、降成本、提效率、优环境4个方面发力
  • 吴清:全力支持中央汇金公司发挥好类“平准基金”作用
  • 五一假期上海边检查验出入境人员超61万人次,同比增长23%
  • 多省份晒出“五一”旅游“成绩单”:北京游客接待量、旅游消费创历史新高
  • 特朗普:不谋求第三个总统任期,中意万斯鲁比奥“接棒”