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