我有一個包含 4 個字段的 DataFrame:地點、年份、周和銷售額。我想知道保留數據集粒度的兩年之間的銷售額差異。我的意思是,我想知道每個地點、年份和周與另一年的同一周有什么區別。下面將生成一個具有類似結構的 Dataframe:raw_data = {'Location': ['A']*30 + ['B']*30 + ['C']*30, 'Year': 3*([2018]*10+[2019]*10+[2020]*10), 'Week': 3*(3*list(range(1,11))), 'Sales': random.randint(100, size=(90))}df = pd.DataFrame(raw_data)Location Year Week SalesA 2018 1 67A 2018 2 93A 2018 … 67A 2019 1 49A 2019 2 38A 2019 … 40B 2018 1 18… … … …您能告訴我什么是最好的方法嗎?非常感謝
1 回答

慕容3067478
TA貢獻1773條經驗 獲得超3個贊
您可以使用groupby和 來做到這一點shift:
df["Next_Years_Sales"] = df.groupby(["Location", "Week"])["Sales"].shift(-1)
df["YoY_Sales_Difference"] = df["Next_Years_Sales"] - df["Sales"]
抽查一下:
df[(df["Location"] == "A") & (df["Week"] == 1)]
Out[37]:
Location Year Week Sales Next_Years_Sales YoY_Sales_Difference
0 A 2018 1 99 10.0 -89.0
10 A 2019 1 10 3.0 -7.0
20 A 2020 1 3 NaN NaN
添加回答
舉報
0/150
提交
取消