使用DataFrame将值添加到一定数量,然后将剩余部分存储在列表中



我正在python中创建一个库存管理系统。

目标是确保任何给定的订单重量小于1800克。如果重量超过1800克,请将订单分成多批。

到目前为止,我有:

import pandas as pd
product_info = [{"mass_g": 700, "product_name": "RBC A+ Adult", "product_id": 0}, {"mass_g": 700, "product_name": "RBC B+ Adult", "product_id": 1}, {"mass_g": 750, "product_name": "RBC AB+ Adult", "product_id": 2}, {"mass_g": 680, "product_name": "RBC O- Adult", "product_id": 3}, {"mass_g": 350, "product_name": "RBC A+ Child", "product_id": 4}, {"mass_g": 200, "product_name": "RBC AB+ Child", "product_id": 5}, {"mass_g": 120, "product_name": "PLT AB+", "product_id": 6}, {"mass_g": 80, "product_name": "PLT O+", "product_id": 7}, {"mass_g": 40, "product_name": "CRYO A+", "product_id": 8}, {"mass_g": 80, "product_name": "CRYO AB+", "product_id": 9}, {"mass_g": 300, "product_name": "FFP A+", "product_id": 10}, {"mass_g": 300, "product_name": "FFP B+", "product_id": 11}, {"mass_g": 300, "product_name": "FFP AB+", "product_id": 12}]
order = {"order_id": 123, "requested": [{"product_id": 0, "quantity": 2}, {"product_id": 10, "quantity": 4}]}
def check_weight(order, product_info):
product_info_df = pd.DataFrame(product_info).set_index("product_id")
order_df = pd.DataFrame(order["requested"]).set_index("product_id")
order_weight = order_df.join(product_info_df)[['quantity', 'mass_g']].prod(1).sum()
if order_weight > 1800:
#???
else:
print('product shipped!')

如果重量超过1800克,我想平分订单
也就是说,取总重量小于1800g的物品,从order中减去它们的数量,然后一遍又一遍地运行代码,直到order的所有数量都为0,因此,订单将100%完成。

我该怎么写这个逻辑呢?

所以你可以做的是,首先有一个订单总数的计数器。然后,如果权重>1800,从总数中减去一。从else语句中也减去一个,所以这里的总数也会发生变化。进行while循环,使此代码一直运行到total为0。让我知道这是否合理,或者你是否有任何后续问题。

最新更新