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