You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中实现多人员间数据的自动均等分配并自动生成‘Name’列

How to Split Data Evenly Among People and Add a 'Name' Column in Python

Got it, let's walk through how to solve this problem step by step. We'll use pandas (the go-to library for tabular data) to split your data evenly across a list of people, then automatically add a 'Name' column as the first column with each person's assigned name.

Step 1: Set Up Your Environment and Data

First, make sure pandas and numpy are installed (numpy helps with clean even splitting). If not, run this in your terminal:

pip install pandas numpy

Next, load or define your raw data. For this example, I'll use a sample DataFrame—replace this with your actual data (e.g., loaded from a CSV with pd.read_csv("your_data.csv")).

import pandas as pd
import numpy as np

# Example raw data (swap this with your own dataset)
raw_data = {
    'Score': [85, 92, 78, 90, 88, 76, 95, 81, 89, 79],
    'Subject': ['Math', 'English', 'Math', 'Science', 'English', 'Science', 'Math', 'English', 'Science', 'Math']
}
df = pd.DataFrame(raw_data)

Step 2: Define Your List of People

List out the names of the people you want to assign data to:

people = ['Alice', 'Bob', 'Charlie']

Step 3: Split the Data Evenly

We'll use np.array_split() to split the DataFrame into groups. This function automatically handles cases where the total number of rows isn't perfectly divisible by the number of people—it distributes extra rows to the first few groups (so the difference is at most 1 row per group, which is usually acceptable for "equal" distribution).

# Split the DataFrame into len(people) equal-ish groups
split_groups = np.array_split(df, len(people))

Step 4: Add the 'Name' Column and Combine Results

Loop through each group, add the corresponding person's name as the first column, then combine all groups into one final DataFrame:

final_results = []

for person, group in zip(people, split_groups):
    # Make a copy to avoid modifying the original data
    group_with_name = group.copy()
    # Insert the 'Name' column at position 0 (the first column)
    group_with_name.insert(0, 'Name', person)
    final_results.append(group_with_name)

# Combine all groups into a single, clean DataFrame
final_df = pd.concat(final_results, ignore_index=True)

Step 5: Check or Save Your Output

Print the result to verify, or save it to a CSV file:

print(final_df)
# Save to CSV if needed (remove the comment below)
# final_df.to_csv("assigned_data.csv", index=False)

Example Output

You'll get a table like this, with the 'Name' column as the first column and data evenly split:

NameScoreSubject
Alice85Math
Alice92English
Alice78Math
Alice90Science
Bob88English
Bob76Science
Bob95Math
Charlie81English
Charlie89Science
Charlie79Math

Quick Notes

  • If you need exactly equal rows (no extra rows in any group), you can trim your data to a number divisible by the number of people first: df = df.iloc[:len(df) - (len(df) % len(people))]—just note this will discard some rows.
  • If your data is in a non-DataFrame format (like a list of dictionaries), convert it first with pd.DataFrame(your_data).

内容的提问来源于stack exchange,提问作者HimaniBali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 22:07:42