我有一個這樣的 df:
lst_1 = ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B']
lst_2 = [500, 600, 800, 900,700, 800,1000, 1200]
lst_3 = ['10/31/2022', '11/02/2022','11/07/2022', '11/14/2022', '10/31/2022', '11/02/2022','11/07/2022', '11/14/2022']
df1 = pd.DataFrame(list(zip(lst_1 , lst_2, lst_3)),
columns =['SKU', 'Sum_Qty_Sold', 'Date_Updated'])
我期望的 df:
lst_1 = ['A', 'A', 'B', 'B']
lst_2 = [300, 100, 300, 200]
lst_3 = ['10/31/2022-11/07/2022', '11/07/2022-11/14/2022', '10/31/2022-11/07/2022', '11/07/2022-11/14/2022']
result = pd.DataFrame(list(zip(lst_1 , lst_2, lst_3)),
columns =['SKU', 'Qty_Sold_By_Week', 'Time_Series'])
如何計算 7 天的“Qty_Sold_By_Week”?'Qty_Sold_By_Week' = -(df 中 'Date_Updated' 的 'Sum_Qty_Sold' - 7 天后的 'Sum_Qty_Sold'(如果有))
uj5u.com熱心網友回復:
grouper = pd.PeriodIndex(df1['Date_Updated'], freq='w').to_timestamp().strftime('%m/%d/%Y')
df = (df1.groupby(['SKU', grouper])['Sum_Qty_Sold']
.first().reset_index().sort_values('SKU').iloc[:, [0, -1, 1]])
df['Sum_Qty_Sold'] = df.groupby('SKU')['Sum_Qty_Sold'].shift(-1) - df['Sum_Qty_Sold']
df['Date_Updated'] = df['Date_Updated'] '-' df.groupby('SKU')['Date_Updated'].shift(-1)
result = df.dropna().rename(columns={'Sum_Qty_Sold':'Qty_Sold_By_Week', 'Date_Updated':'Time_Series'})
輸出(result):
SKU Qty_Sold_By_Week Time_Series
0 A 300.0 10/31/2022-11/07/2022
1 A 100.0 11/07/2022-11/14/2022
3 B 300.0 10/31/2022-11/07/2022
4 B 200.0 11/07/2022-11/14/2022
下次,不要像這樣制作示例的列名。名字太長不需要解決問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/534482.html
標籤:Python熊猫约会时间
上一篇:如何以天為單位設定日期限制?
