|
import pandas as pd |
|
import gradio as gr |
|
|
|
def convert_schedule(file, direction): |
|
|
|
df = pd.read_excel(file.name if hasattr(file, 'name') else file, index_col=0) |
|
|
|
if direction == "A to B": |
|
|
|
df_reset = df.reset_index() |
|
model_col = df_reset.columns[0] |
|
df_melt = df_reset.melt(id_vars=[model_col], var_name='Header', value_name='Texter') |
|
df_melt = df_melt.dropna(subset=['Texter']) |
|
df_pivot = df_melt.pivot(index='Texter', columns='Header', values=model_col) |
|
df_pivot = df_pivot.reindex(columns=df.columns).fillna("") |
|
result = df_pivot |
|
else: |
|
|
|
df_reset = df.reset_index() |
|
texter_col = df_reset.columns[0] |
|
df_melt = df_reset.melt(id_vars=[texter_col], var_name='Header', value_name='Model') |
|
df_melt = df_melt.dropna(subset=['Model']) |
|
df_pivot = df_melt.pivot(index='Model', columns='Header', values=texter_col) |
|
df_pivot = df_pivot.reindex(columns=df.columns).fillna("") |
|
result = df_pivot |
|
|
|
|
|
out_file = "converted_schedule.xlsx" |
|
result.to_excel(out_file) |
|
return result, out_file |
|
|
|
|
|
iface = gr.Interface( |
|
fn=convert_schedule, |
|
inputs=[ |
|
gr.File(label="Upload Schedule Excel (Format A or B)"), |
|
gr.Radio(["A to B", "B to A"], label="Conversion Direction") |
|
], |
|
outputs=[ |
|
gr.Dataframe(label="Converted Schedule"), |
|
gr.File(label="Download Converted Excel") |
|
], |
|
title="Schedule Format Converter", |
|
description="Dynamically convert between two schedule formats: models-as-rows β texters-as-rows." |
|
) |
|
|
|
if __name__ == "__main__": |
|
iface.launch() |
|
|