Skh*_*haz 1 python optimization aggregate knapsack-problem pandas
我有一个包含两列的数据框
df = DataFrame.from_records([
{"time": 10, "amount": 200},
{"time": 70, "amount": 1000},
{"time": 10, "amount": 300},
{"time": 10, "amount": 100},
])
Run Code Online (Sandbox Code Playgroud)
我想要,给定一段时间80ms,计算可能的最大数量,在这种情况下,输出应该是 1300,因为在此期间,可能的最大数量是 1300。
熊猫可以吗?我想过使用聚合,但我不知道如何使用它
这是一个背包问题,你可以用专用库来解决它(例如knapsack):
from knapsack import knapsack
total, idx = knapsack(df['time'], df['amount']).solve(80)
df.out = df.iloc[idx]
Run Code Online (Sandbox Code Playgroud)
输出:
time amount
1 70 1000
2 10 300
Run Code Online (Sandbox Code Playgroud)
其他例子:
# with max = 75
time amount
1 70 1000
# with max = 40
time amount
0 10 200
2 10 300
3 10 100
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |