我试图以某种方式对数据框架进行采样,使内容的总和适合特定的分布。
假设我想用水果装满一个篮子,但每次我只能通过添加水果的混合来实现,并且我的篮子只能容纳一定数量的每种水果。我可以在一个矩阵中表示dataframe的内容,比如:
| 混合|苹果|香蕉|橙子|
| --------------|--------------|--------------|--------------|
| 1|1|1|1|
| 二|二|二|二|
| 三|三|四|三|
我的篮子可以装3个苹果、3个香蕉和3个橙子,因此如果我选择mix 1和mix 2,就可以满足篮子的最大容量。
现在我的问题是,这个 Dataframe 包含成千上万的混合,所以以贪婪的方式搜索组合将花费很长时间。有没有一种方法来近似可能的组合?(我甚至可以计算出一点误差,i。虽然mix 3多了一个banana,但如果这有助于降低运行时间,我可以接受这个组合)。
2条答案
按热度按时间xqnpmsa81#
这不应该是Python运行时的问题。该脚本运行不到一秒钟就能从1000万行代码中筛选出可能的果篮
这是生成的输出:
ve7v8dk22#
你可以使用dataframe过滤器,让pandas高效地完成它,而不是遍历每一行。创建一个新列,其中包含混合中所有水果的总和。然后添加过滤器到您的 Dataframe ,以剔除明显的混合不工作。一个过滤器可以是水果的总数应该〈=可以装在你的袋子里的水果总数。你也可以为每个水果添加过滤器,如果它超过了容量的话。按和排序以首先获得最佳组合