[英]How to convert weeks into months and sum values
我有一個如下的數據集
指數Sku周銷售
0 SKU1442 201420 1904.0
1個SKU1442 201421 692.0
2個SKU1442 201422 842.0
3個SKU1442 201423 1013.0
4 SKU1442 201424 362.0
5 SKU1442 201425 279.0
6個SKU1442 201426 430.0
7個SKU1442 201427 861.0
8個SKU1442 201428 1069.0
9 SKU1442 201429 721.0
我試圖根據年和周的數字來匯總整個月的銷售額。 例如201406-> 9999,201407-> 100
到目前為止,我已經能夠使用函數as將星期轉換為日期;
dt = datetime.strptime('201420'+ '1', '%Y%W%w')
任何幫助表示贊賞。
我認為首先需要to_datetime
,然后resample
並匯總sum
:
df['Week'] = pd.to_datetime(df['Week'].astype(str) + '1', format='%Y%W%w')
df = df.resample('M', on='Week').sum()
print (df)
Sales
Week
2014-05-31 2596.0
2014-06-30 2926.0
2014-07-31 2651.0
替代解決方案通過to_period
轉換為month
周期:
df = df.groupby(df['Week'].dt.to_period('m')).sum()
print (df)
Sales
Week
2014-05 2596.0
2014-06 2926.0
2014-07 2651.0
編輯:為了更好的示例已更改ISku
列中的輸入數據:
print (df)
ISku Week Sales
0 SKU1442 201420 1904.0
1 SKU1442 201421 692.0
2 SKU1442 201422 842.0
3 SKU1442 201423 1013.0
4 SKU1444 201424 362.0
5 SKU1444 201425 279.0
6 SKU1444 201426 430.0
7 SKU1444 201427 861.0
8 SKU1444 201428 1069.0
9 SKU1442 201429 721.0
df['Week'] = pd.to_datetime(df['Week'].astype(str) + '1', format='%Y%W%w')
df = df.groupby(['ISku',df['Week'].dt.to_period('m')]).sum().reset_index()
print (df)
ISku Week Sales
0 SKU1442 2014-05 2596.0
1 SKU1442 2014-06 1855.0
2 SKU1442 2014-07 721.0
3 SKU1444 2014-06 1071.0
4 SKU1444 2014-07 1930.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.