基于分发过程中条件变化的数据帧任务分发

2024-04-25 03:31:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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中总_值最小的人。显然,当我将任务132分配给Adam Johnson时,他的总值会更大,所以下一个任务将分配给另一个人

到目前为止,我已经用一个糟糕的VBA代码解决了这个问题,该代码基本上循环了DF2中的每个元素,然后再次循环了所有DF1元素(最多10次,以找到最佳匹配)。当DF1中有约200个元素和DF2中有4000个元素时,这需要花费很长的时间,并且在将来发生变化时,这根本不是一个好的解决方案

我相信在Python中有更好的方法来实现这一点,但我不知道如何在不使用多个循环和重新定义数据帧的情况下实现这一点

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


Tags: 数据代码nameid元素taskvaluesurname