筛选相同项

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值