如何将周转换为月和求和值

2024-05-15 17:55:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下的数据集

每周销售指数Sku

0 SKU1442 201420 1904.0

一, SKU1442 201421 692.0

二, SKU1442 201422 842.0

三, SKU1442 201423 1013.0

四, SKU1442 201424 362.0

五, SKU1442 201425 279.0

六, SKU1442 201426 430.0

七, SKU1442 201427 861.0

八, SKU1442 201428 1069.0

九, SKU1442 201429 721.0

我试着根据年度和周数来计算各个月的销售额。对于eg 201406->;9999201407->;一百

到目前为止,我已经能够使用函数as将一周转换为日期

dt = datetime.strptime('201420'+ '1', '%Y%W%w')

感谢您的帮助


Tags: 数据函数gtdatetimeasdt指数eg
1条回答
网友
1楼 · 发布于 2024-05-15 17:55:24

我认为首先需要^{},然后是^{}和聚合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

替代解决方案是通过^{}转换为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

相关问题 更多 >