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) # 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) # Save the DataFrame to a CSV file output_filename = '/tmp/grouped_names.csv' grouped_df.to_csv(output_filename, index=False) return output_filename iface = gr.Interface( fn=main_interface, inputs=[gr.File(label="Upload CSV File"), gr.Number(label="Members per Group", value=5)], outputs=gr.File(label="Download Grouped Names CSV"), allow_flagging="never" ) iface.launch()