Python Pandas -将分组值移至下一个日期

pcrecxhr  于 2022-12-09  发布在  Python
关注(0)|答案(2)|浏览(125)

我正在尝试构建时间序列分析模型,并希望创建一些包含先前行的值的要素。
我有一个数据集如下:
| 项目标识|车间标识|件物品_已卖出|日期块标识|
| - -|- -|- -|- -|
| 一个|一个|五个|第0页|
| 一个|2个|10个|第0页|
| 一个|一个|七个|一个|
| 2个|2个|八个|一个|
| 2个|一个|五个|一个|
我想添加一个列,其中包含上一个日期块中每个商品/商店组合的商品销售额。
| 项目标识|车间标识|件物品_已卖出|日期块标识|lag 1_商品_已售|
| - -|- -|- -|- -|- -|
| 一个|一个|五个|第0页|第0页|
| 一个|2个|10个|第0页|第0页|
| 一个|一个|七个|一个|五个|
| 2个|2个|八个|一个|第0页|
| 2个|一个|五个|一个|第0页|
我认为,如果在某个日期段内没有销售,那么表中就不会出现该商品/商店组合的条目,这是一个很难解决的问题。我尝试了各种分组和移动的组合,但似乎无法得到我想要的结果。

tkqqtvp1

tkqqtvp11#

查看df.shift与groupby.docs的组合为班次here
代码为here的旧答案。下次尝试搜索SO,您可能会找到答案!

xwbd5t1u

xwbd5t1u2#

试试看:

df["lag1_items_sold"] = (
    df.groupby(["item_id", "shop_id"])["items_sold"].shift().fillna(0)
)

print(df)

印刷品:

item_id  shop_id  items_sold  date_block_id  lag1_items_sold
0        1        1           5              0              0.0
1        1        2          10              0              0.0
2        1        1           7              1              5.0
3        2        2           8              1              0.0
4        2        1           5              1              0.0

相关问题