销售速度定义为sales / running_days

时间:2018-10-15 11:04:52

标签: python datetime group-by

我有一个交易销售数据框:

print(df)

dt_op      quantity      cod_id
20/01/18      1            100
20/01/18      8            102

21/01/18      1            100 
21/01/18     10            102
...

我想为产品中的每个不同商品定义一个新变量“ 速度”作为“累计销售量/ 天数 _since_the_launch_of_ _product “ cod_id”。

我尝试过:

start = min(df["dt_op"])

df["running_days"] = (df["dt_op"] - start).astype('timedelta64[D]')
df["csum"] = df.quantity.cumsum()

df["speed"] = df["csum"] / df["running_days"]

但是它不会为每个项目计算;我会避免for循环来解决计算问题和运行时间缓慢。

1 个答案:

答案 0 :(得分:0)

尝试使用grouby在新列中保存每个“ cod_id”的首次启动日期:

df2 = df.groupby(['cod_id']).dt_op.min()

并将其合并回您的数据框

df = pd.merge(df, df2, on='cod_id', how='left')

然后创建一个新列,作为最短日期和第一个日期之间的数据差。您可以像上面一样计算csum并通过日期差进行计算。