根据百分比值分发给用户

To distribute to people according to percentage values

提问人:OKAY SANDAL 提问时间:1/22/2023 最后编辑:Quang HoangOKAY SANDAL 更新时间:1/22/2023 访问量:61

问:

我有一个想要创建的算法。该算法的结构应如下所示。下面是代码块中定义的 CSV 文件。在此文件中,每个客户都有特定的权重。这些权重的总和为 100%。

Customer,Weight

A,3.39
B,0.86
C,0.060000000000002274
D,1.43
E,24.66
F,0.34
G,24.49
H,7.59
I,7.24
J,25.58
K,3.96
L,0.4

我的目标:

例如,假设有 3 个人。当我想将客户平均分配给这 3 个人时,每个人都获得 33% 的份额。这些股票价值是从上面列出的客户的价值中获得的。我怎样才能将这些价值观平均分配给人们?

enter image description here

我的意见:

我倾向于在 Python 中使用像 Pandas 这样的库来进行这种分配。但我还不知道如何创建它。如果您可以分享此算法的代码示例或源代码,那对我来说会很棒。提前非常感谢您的帮助。

我尝试过什么:

我在 Python 中使用了 Pandas 库的许多参数进行了操作。但我是 Python 的新手,刚刚习惯使用这些库。正因为如此,我无能为力。

python-3.x pandas 算法 python-2.7

评论

0赞 Quang Hoang 1/22/2023
这不是一个简单的问题,显然可能没有解决方案/分区,即使有一些阈值。例如,对于整数列表,这里有一个类似的问题。

答:

0赞 Mahmoud 1/22/2023 #1

相信您正在寻找经典的优化问题 Bin 包装

您可以使用线性求解器方法,也可以使用现有的 python 包来完成此确切的任务,最显着的是 numberpartitioning 或围绕它的包装器,如 binpacking

$ pip install binpacking
>>> import binpacking

>>> b = {'A': 3.39, 'B': 0.86, 'C': 0.060000000000002274,
         'D': 1.43, 'E': 24.66, 'F': 0.34, 'G': 24.49,
         'H': 7.59, 'I': 7.24, 'J': 25.58, 'K': 3.96, 'L': 0.4}
>>> bins = binpacking.to_constant_bin_number(b, 3)
>>> bins
[{'J': 25.58, 'K': 3.96, 'A': 3.39, 'L': 0.4},
 {'E': 24.66, 'I': 7.24, 'D': 1.43},
 {'G': 24.49, 'H': 7.59, 'B': 0.86, 'F': 0.34, 'C': 0.060000000000002274}]