首页 > 解决方案 > 基于条件的所有可能组合并在python中应用求解器?

问题描述

我有以下格式的数据集:

Amounts   Type    Target
500        1       380
200        1       380
100        2       380
200        2       380

我需要弄清楚Amounts不同类型的哪种组合(例如,类型 1 的 500 个和类型 2 的 200 个)将在加权平均 60/40 后产生目标值。

例如:

0.6 * 500 + 0.4 * 200 = 380 所以 500 和 200 的组合应该返回 True。

我想到了一个循环,将每一行与另一行相乘以产生所有可能的组合(有条件地 on Type),但不确定如何使 itertools 以另一列为条件?

我也只希望返回返回 True 的行组合,也许可以通过索引或 ID 列识别?

谢谢!

标签: pythonpandascombinationspermutationitertools

解决方案


这将是非常低效的。

如果您考虑 500 单位的类型 2 和 380 的目标,您知道您需要 (380 - 0.6 x 500) / 0.4 = 200 单位的类型 2。因此每种类型的数量字典要好得多。


推荐阅读