python - 将项目分配给熊猫数据框
问题描述
我正在处理一个库存警报问题,用户提供电子邮件 ID、他/她感兴趣的产品、3 家商店,当它有库存时,他可以从那里取货。我在 pandas 数据框中有数据,其中有电子邮件 ID、产品 ID、3 个商店映射到它。
import pandas as pd
import numpy as np
df = pd.DataFrame([['nick_1@gmail.com', 9999, 1000, 1001, 1002, np.nan ],
['sam_s@gmail.com', 9999, 1000, 1001, 1002, np.nan ],
['george_l@gmail.com', 9999, 1000, 1001, 1500, np.nan ],
['fred_g@gmail.com', 9777, 1500, 1501, 1155, np.nan ],
['katie_l@gmail.com', 9777, 1500, 1501, 1155, np.nan ]],
columns=['CUSTOMER_EMAIL', 'PRODUCT_ID', 'STORE_1', 'STORE_2', 'STORE_3', 'SEND_NOTIFICATION'])
我需要根据下面另一个数据框中的库存情况将 SEND_NOTIFICATION 列设置为 True / False:
stock = pd.DataFrame([[9999, 1000, 2],
[9999, 1002, 1 ],
[9977, 1500, 1 ]
], columns=['PRODUCT_ID', 'STORE_ID',
'STOCK_AVAILABLE'])
在商店 ID 1000 中,产品 9999 有两件库存商品。因此,最多可以为两个注册的用户发送通知。在这种情况下,nick_1@gmail.com 的 SEND_NOTIFICATION 列可以将 sam_s@gmail.com 设置为 True。行 george_l@gmail 设置为 False,因为映射到他的任何商店中都没有足够的可用库存。
产品 9977 在商店 ID 1500 中有一件商品。因此可以将一位用户 fred_g@gmail.com 设置为 True,而 katie_l 由于缺货而设置为 False
我正在考虑一种简单的方法,即遍历库存数据框中的每个项目,搜索产品-库存组合的次数与可用库存一样多。
for index, row in stock_data.iterrows():
stock_available = row["SOH"]
while stock_available >= 0:
stock_available -= 1
<search for product id - store id combination in other dataframe and mark records as true>
有没有更好的方法来实现这个结果?我认为 pandas cumsum 是我可以使用的东西,但我无法理解如何实现逻辑。
解决方案
推荐阅读
- java - Java:使用时列表的泛型类型参数是协变的还是逆变的?
- mysql - mysql触发器插入表A上的表B插入,然后表B上有另一个插入触发器插入表C
- java - 使用过滤器共享登录主题
- python - 如何从每一层 Keras 获取数组中的输出值
- amazon-web-services - 如何创建自定义 AWS 资源名称?
- r - 无法安装包 bsselectR
- angular - 如何根据下拉列表中的选定值动态更改占位符的值?
- html - 我的电子邮件模板在 Gmail 的摘录中显示 HTML
- c++ - 向下转换为 uint32_t 时如何正确检查溢出
- animation - 三 JS:使用轨迹球控制在其轴上旋转对象