formatter / app.py
kreemyyyy's picture
Rename main.py to app.py
137d678 verified
raw
history blame
1.92 kB
import pandas as pd
import gradio as gr
def convert_schedule(file, direction):
# Read the uploaded Excel file; use the first column as index
df = pd.read_excel(file.name if hasattr(file, 'name') else file, index_col=0)
if direction == "A to B":
# A->B: models in rows, texters in cells -> texters as rows, models as cell values
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:
# B->A: texters in rows, models in cells -> models as rows, texters as cell values
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
# Save to Excel for download
out_file = "converted_schedule.xlsx"
result.to_excel(out_file)
return result, out_file
# Build Gradio interface
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()