我需要知道每种产品按行销售的天数。例如“在第1天,产品AX1在第1天售出了3件,而产品AX2在第1天售出了2件”
我有这个:
Product | Date | Sales
AX1 |2019-01-01 | 3
AX1 |2019-01-02 | 2
AX2 |2019-01-01 | 2
AX2 |2019-01-02 | 1
但是我需要这个:
Product | Date | Sales | Day
AX1 |2019-01-01 | 3 | 1
AX1 |2019-01-02 | 2 | 2
AX2 |2019-01-01 | 2 | 1
AX2 |2019-01-02 | 1 | 2
答案 0 :(得分:3)
尝试:
import numpy as np
# if not done already:
df["Date"]=pd.to_datetime(df["Date"])
df=df.sort_values(["Product", "Date"])
df["Days"]=df.groupby("Product")["Date"].diff()
mask=df["Days"].isna()
df["Days"]=df["Days"].eq(pd.to_timedelta("1 days"))
df["Days"]=np.where(~df["Days"]&~mask, -df.groupby("Product")["Days"].cumsum(), df["Days"])
df["Days"]=df.groupby("Product")["Days"].cumsum().add(1).astype(int)
输出:
Product Date Sales Days
0 AX1 2019-01-01 3 1
1 AX1 2019-01-02 2 2
2 AX2 2019-01-01 2 1
3 AX2 2019-01-02 1 2