|
import pandas as pd |
|
import random |
|
import gradio as gr |
|
import os |
|
|
|
def group_names(file, members_per_group): |
|
|
|
df = pd.read_csv(file.name, encoding='utf-8') |
|
|
|
|
|
df = df.sample(frac=1).reset_index(drop=True) |
|
|
|
|
|
groups = [] |
|
for i in range(0, len(df), members_per_group): |
|
groups.append(df[i:i + members_per_group]) |
|
|
|
|
|
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) |
|
|
|
output_filename = '/tmp/grouped_names.csv' |
|
grouped_df.to_csv(output_filename, index=False, encoding='utf-8-sig') |
|
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() |