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()