Spaces:
Sleeping
Sleeping
import gradio as gr | |
import pandas as pd | |
def process_excel(file): | |
# 注意这里的file.name,如果自己在线下python环境运行的话要删掉(.name) | |
df = pd.read_excel(file.name, engine='openpyxl') | |
return df | |
def merge_excel_tables(file_path1, file_path2,output_file = '合并后的表.xlsx'): | |
# 读取第一张表 | |
df1 = process_excel(file_path1) | |
# 读取第二张表 | |
df2 = process_excel(file_path2) | |
# 执行关联操作,假设关联列名为'关联列' | |
merged_df = df1.merge(df2, left_on=list(df1.columns)[0], right_on=list(df2.columns)[0], how='left') | |
# 重命名合并后的表格的列名,去除_x和_y后缀 | |
column_mapping = {} | |
for col in df1.columns: | |
column_mapping[col] = col | |
for col in merged_df.columns: | |
if col.endswith('_x'): | |
new_col = col[:-2] # 去除_x后缀 | |
if new_col in column_mapping: | |
column_mapping[new_col] = new_col # 如果存在相同的列名,保持不变 | |
merged_df.rename(columns={col: new_col}, inplace=True) | |
elif col.endswith('_y'): | |
new_col = col[:-2] # 去除_y后缀 | |
merged_df.rename(columns={col: new_col}, inplace=True) | |
# 删除没有数据的列 | |
merged_df = merged_df.dropna(axis=1, how='all') | |
#把修改后表格的标签写好 | |
merged_df = merged_df[list(df1.columns)] | |
# # 保存结果到新的Excel文件 | |
# merged_df.to_excel(output_file, index=False) | |
return merged_df | |
iface = gr.Interface(fn=merge_excel_tables, | |
inputs=[gr.File(type='file',label='excle表格1'), | |
gr.File(type='file',label='excle表格2')], | |
outputs=[gr.outputs.Dataframe(type='pandas',label='合并后表格')], | |
title="强哥的Excel Processor", | |
description="功能描述:根据表格一的第一列,寻找表格二对应第一列的行数据,把表格二中与表格一相同标签数据填入表格一") | |
iface.launch() |