第一个数据帧显示 qty_ordered(表示每个客户订购的商品数量)和 qty_needed(对每行后的商品数量进行累计求和,以确定某个特定客户可以收到其订单之前必须满足多少商品)。 示例:第 4 行订购了 1 件,在收到 1 件之前,他们还剩 7 件。
qty_ordered qty_needed
2 2
3 5
1 6
1 7
4 11
3 14
1 15
3 18
20 38
第二个数据框显示shipped_qty,即在特定日期ship_date 发货的单位数量。
shipped_qty ship_date
10 1/20/2022
24 2/20/2022
42 3/20/2022
我想通过添加一列来组合这些数据集,该列显示发货数量大于或等于 qty_needed 的发货日期。
qty_ordered qty_needed ship_date
2 2 1/20/2022
3 5 1/20/2022
1 6 1/20/2022
1 7 1/20/2022
4 11 2/20/2022
3 14 2/20/2022
1 15 2/20/2022
3 18 2/20/2022
20 38 3/20/2022
我首先尝试使用一个简单的 for 循环语句,但这只是返回所有的发货日期,而不是我需要的日期。在 Excel 中,我会执行一个 IF 语句,如果 qty_needed <=shipping_qty,则返回ship_date。
最佳答案
您可以使用pandas.merge_asof
来完成此类任务。假设“qty_ordered”和“qty_needed”的 DataFrame 名为 df
,“shipped_qty”的 DataFrame 名为 df_dates
,以下代码行即可实现此目的:
pd.merge_asof(df, df_dates, left_on='qty_needed', right_on='shipped_qty', Direction='forward')
关于python - 创建新列,其中日期对应于一个数量是否大于或等于另一个数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72901369/