grouping / app.py
MK-316's picture
Update app.py
be25c5f verified
raw
history blame
1.11 kB
import pandas as pd
import random
import gradio as gr
import os
def group_names(file, members_per_group):
# Read the CSV file
df = pd.read_csv(file.name, encoding='utf-8')
# Shuffle the DataFrame
df = df.sample(frac=1).reset_index(drop=True)
# Grouping
groups = []
for i in range(0, len(df), members_per_group):
groups.append(df[i:i + members_per_group])
# Creating a new DataFrame for grouped data
grouped_df = pd.DataFrame({'Group': [f'Group {i+1}' for i, group in enumerate(groups)],
'Names': [', '.join(group['Names'].tolist()) for group in groups]})
return grouped_df
def main_interface(file, members_per_group):
grouped_df = group_names(file, members_per_group)
# Here, we return the DataFrame directly instead of saving and returning a file path
return grouped_df
iface = gr.Interface(
fn=main_interface,
inputs=[gr.File(label="Upload CSV File"), gr.Number(label="Members per Group", value=5)],
outputs=gr.Dataframe(label="Grouped Names"),
allow_flagging="never"
)
iface.launch()