我有一个交易销售数据:
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
...我想为“days_elapsed_since_the_launch_of_that_product,”中的每个不同项定义一个新变量“”为"cumulative_sales /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 -循环。
发布于 2018-10-15 11:26:41
尝试在一个新列中为每一个“cod_id”保存第一个启动日期:
df2 = df.groupby(['cod_id']).dt_op.min()
并将其合并回您的数据
df = pd.merge(df, df2, on='cod_id', how='left')
然后创建一个新列,作为最小日期和第一个日期之间的数据差异。你可以像上面那样计算csum,然后再计算出日期差。
https://stackoverflow.com/questions/52815308
复制相似问题