为简化我的工作:
我有50名员工,每人可完成40个任务。
我有一个要从SQL表中读取的数据框,该框要筛选为分数等于10的任务,然后将其分配给每位员工,以便他们拥有完整的“篮子”或工作量。我想为每个员工分配一项任务,然后进行迭代直到完成。
我的最终输出看起来像一个列表,每个列表都基于位置,表示员工编号和分配给他们的任务。
final_basket = [[task1, task2,...] , [task8, task11], ...[task45,task4]]
最后一个购物篮中的每个列表都将与一名员工相对应,例如:
final_basket[0] = [task1, task2,...]
将是第一位员工的全部任务。
我可以为每个受雇的员工分配任务,但是我不得不重新分配所有员工以填补他们的能力。
def basket_builder(i):
agent_basket = [[ ] for basket in range(40)] #define empty basket for all 40 agents
score_10 = base_data_1_mo[base_data_1_mo.case_score == 10] #filter data to score 10 only
score_10 = score_10[['investigation_id']] #select only investigation id df
score_10 = score_10.sort_index() ##sort by index asc
for i in range(40):
investigation_id = score_10.iloc[0]['investigation_id']
agent_basket[i].append(investigation_id)
index_drop_v2 = score_10[score_10.investigation_id == investigation_id].index[0]
score_10 = score_10.drop([index_drop_v2])
return final_basket
for i in range(40):
final_basket = []
final_basket = [[basket_builder(i) for agent in agent_basket[i]]
final_basket
由于我进行了一些修改以使用函数尝试在此处循环,所以即使打印final_Basket
答案 0 :(得分:0)
您可以用类似的方法做到这一点吗?
employee_task = {}
for n, task in enumerate(tasks):
employee_number = n % 50
if employee_number not in employee_task:
employee_task[employee_number] = []
employee_task[employee_number].append(task)
并检查每个员工完成的任务少于40个的后验