【发布时间】:2016-06-02 14:11:40
【问题描述】:
我有一个如下所示的熊猫数据框
buyer_id item_id order_id date qty_purchased qty_bought
210 82 470 2016-01-02 5 1
169 57 475 2016-01-02 5 1
169 83 475 2016-01-02 5 1
228 82 520 2016-01-03 4 1
228 86 520 2016-01-03 4 1
228 90 520 2016-01-03 4 1
229 57 521 2016-01-03 4 1
232 82 525 2016-01-04 4 3
210 90 526 2016-01-04 4 1
210 91 526 2016-01-04 5 1
210 15 526 2016-01-05 5 1
233 90 527 2016-01-05 4 1
我想找到每个日期引入的item_id,如果 item_id 在多个日期引入,那么我想找到每个日期的 `(qty_bought/qty_purchased) 的比率。
我想要的输出如下
Item_id date 1st Introduced Ratio Date 2nd Introduced Ratio Date 3rd Introduced Ratio Flag
82 2016-01-02 1/5 2016-01-03 1/4 2016-01-04 3/4 1
标志的条件是当比率大于以前的日期时,它应该设置为 1,否则为 0
如果我在 5 个不同的日期引入了项目,那么这应该会动态生成 5 个日期和比率列。比率将特定于该日期。我只想列出不止一次介绍的item_id。
这是我在 python 中的尝试
df.groupby('item_id')['date'].apply(lambda x: np.unique(x.tolist()))
这给了我item_id 的列表以及他们被介绍的日期。现在,如果该项目已在 1 个以上的日期推出,我想在上面进行子集化。
df.groupby('item_id').apply(lambda r: r['date'].unique().shape[0] > 1)
这给了我在超过 1 个日期介绍的所有 item_id。但是我没有得到如何制作具有所需输出的数据框以及如何根据引入它们的日期动态添加date & ratio 列。请帮忙
【问题讨论】:
-
我不明白标志的用途,如果有三个日期,以及比率从日期 1 到日期 2 增加但从日期 2 到日期 3 减少。会发生什么?跨度>
-
@imp9 如果第三个日期的比率大于第二个日期,则标志将设置为 1。
-
i@imp9 我想要有问题的输出。但不知道如何使数据框看起来像这样
-
我已经更新了我的解决方案。