基于分布期间条件变化的数据框任务分布

时间:2019-12-14 12:57:00

标签: python pandas dataframe

让我们考虑两个单独的数据帧:

DF1:

ID    Name    Surname    Total_Value    [further, not important as of now booleans etc.]
1     John    Smith      1.0
2     Adam    Johnson    0.95

DF2:

Task_Name    Value    Person_ID
[...]        [...]    [...]
Task_132     0.08     None

这是我所遇到的问题的非常简化的版本,因此,如果在响应中很重要,请告诉我。我要做的是将所有任务从 DF2 分配给在 DF1 中Total_Value最少的人。显然,当我将Task#132分配给Adam Johnson时,他将拥有更大的Total_Value,因此下一个任务将分配给另一个人。

到目前为止,我已经用一个糟糕的VBA代码解决了这个问题,该代码基本上循环遍历 DF2 中的每个元素,然后再次遍历所有 DF1 元素(直到10次​​,以找到最合适的位置)。如果 DF1 中有大约200个元素,而 DF2 中有4000个元素,则花费的时间太长了,对于将来进行更改,这根本不是一个好的解决方案。

我确实相信在Python中有一种更好的方法,但是我不确定如何在不使用多个循环和沿途重新定义DataFrame的情况下做到这一点。

编辑:仍然没有想出其他解决方案,考虑到沉默,我想知道是否有可能。另外-改进了格式。

1 个答案:

答案 0 :(得分:2)

我认为,如果将其实现为Priorityqueue,例如使用heapq,则可以使DF1中最小元素的查询更快。这些数据结构允许在O(log n)时间内提取最小的元素并插入/更新元素。您仍然需要遍历DF2中的任务,但是更新会更快。