Update app.py
Browse files
app.py
CHANGED
|
@@ -4,7 +4,7 @@ import gradio as gr
|
|
| 4 |
def group_names(file, members_per_group, fixed_groups_input):
|
| 5 |
# Read the CSV file
|
| 6 |
df = pd.read_csv(file.name, encoding='utf-8')
|
| 7 |
-
|
| 8 |
# Parse fixed groups input
|
| 9 |
fixed_groups = [group.strip() for group in fixed_groups_input.split(';') if group.strip()]
|
| 10 |
fixed_groups_df_list = []
|
|
@@ -21,7 +21,7 @@ def group_names(file, members_per_group, fixed_groups_input):
|
|
| 21 |
|
| 22 |
# Shuffle the remaining DataFrame
|
| 23 |
remaining_df = remaining_df.sample(frac=1).reset_index(drop=True)
|
| 24 |
-
|
| 25 |
# Adjusting fixed groups to include additional members if they're under the specified group size
|
| 26 |
for i, group_df in enumerate(fixed_groups_df_list):
|
| 27 |
while len(group_df) < members_per_group and not remaining_df.empty:
|
|
@@ -34,14 +34,17 @@ def group_names(file, members_per_group, fixed_groups_input):
|
|
| 34 |
for i in range(0, len(remaining_df), members_per_group):
|
| 35 |
groups.append(remaining_df[i:i + members_per_group])
|
| 36 |
|
| 37 |
-
#
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
|
|
|
| 44 |
|
|
|
|
|
|
|
| 45 |
return grouped_df
|
| 46 |
|
| 47 |
def main_interface(file, members_per_group, fixed_groups_input):
|
|
@@ -55,11 +58,11 @@ iface = gr.Interface(
|
|
| 55 |
fn=main_interface,
|
| 56 |
inputs=[
|
| 57 |
gr.File(label="Upload CSV File"),
|
| 58 |
-
gr.Number(label="Members per Group", value=
|
| 59 |
-
gr.Textbox(label="Fixed Groups (separated by semicolon)", placeholder="
|
| 60 |
],
|
| 61 |
outputs=[gr.Dataframe(label="Grouped Names"), gr.File(label="Download Grouped Names CSV")],
|
| 62 |
allow_flagging="never"
|
| 63 |
)
|
| 64 |
|
| 65 |
-
iface.launch()
|
|
|
|
| 4 |
def group_names(file, members_per_group, fixed_groups_input):
|
| 5 |
# Read the CSV file
|
| 6 |
df = pd.read_csv(file.name, encoding='utf-8')
|
| 7 |
+
|
| 8 |
# Parse fixed groups input
|
| 9 |
fixed_groups = [group.strip() for group in fixed_groups_input.split(';') if group.strip()]
|
| 10 |
fixed_groups_df_list = []
|
|
|
|
| 21 |
|
| 22 |
# Shuffle the remaining DataFrame
|
| 23 |
remaining_df = remaining_df.sample(frac=1).reset_index(drop=True)
|
| 24 |
+
|
| 25 |
# Adjusting fixed groups to include additional members if they're under the specified group size
|
| 26 |
for i, group_df in enumerate(fixed_groups_df_list):
|
| 27 |
while len(group_df) < members_per_group and not remaining_df.empty:
|
|
|
|
| 34 |
for i in range(0, len(remaining_df), members_per_group):
|
| 35 |
groups.append(remaining_df[i:i + members_per_group])
|
| 36 |
|
| 37 |
+
# Determine the maximum group size
|
| 38 |
+
max_group_size = max(len(group) for group in groups)
|
| 39 |
+
|
| 40 |
+
# Creating a new DataFrame for grouped data with separate columns for each member
|
| 41 |
+
grouped_data = {'Group': [f'Group {i+1}' for i in range(len(groups))]}
|
| 42 |
+
# Add columns for each member
|
| 43 |
+
for i in range(max_group_size):
|
| 44 |
+
grouped_data[f'Member{i+1}'] = [group['Names'].tolist()[i] if i < len(group) else "" for group in groups]
|
| 45 |
|
| 46 |
+
grouped_df = pd.DataFrame(grouped_data)
|
| 47 |
+
|
| 48 |
return grouped_df
|
| 49 |
|
| 50 |
def main_interface(file, members_per_group, fixed_groups_input):
|
|
|
|
| 58 |
fn=main_interface,
|
| 59 |
inputs=[
|
| 60 |
gr.File(label="Upload CSV File"),
|
| 61 |
+
gr.Number(label="Members per Group", value=5),
|
| 62 |
+
gr.Textbox(label="Fixed Groups (separated by semicolon)", placeholder="Group1Name1, Group1Name2; Group2Name1, Group2Name2", value=""),
|
| 63 |
],
|
| 64 |
outputs=[gr.Dataframe(label="Grouped Names"), gr.File(label="Download Grouped Names CSV")],
|
| 65 |
allow_flagging="never"
|
| 66 |
)
|
| 67 |
|
| 68 |
+
iface.launch()
|