繁体   English   中英

将月度数据转换为周度数据 - Python

[英]Convert monthly data to weekly data - Python

我有一个 dataframe 看起来像这样:

ID Date     Volume Sales
1  2020-02   10     4
1  2020-03   8      6
2  2019-12   6      8
2  2019-10   4      10

这里的数据是每月的,我想将其转换为每周.. 将数量和销售列除以该月的周数。

我已经尝试过,但只能逐列成功地完成此操作。有没有一种简单的方法可以做到这一点,也可以在大型数据集上处理。

将每周转换回每月是否是类似的步骤? 谢谢!

据我了解,您可以尝试使用pd.offset基于Date列创建所有周的数组,然后分解和groupby+transform以获取每个组的计数以在除法中使用它:

s = pd.to_datetime(df['Date'])
u = (df.assign(Weeks=[pd.date_range(*x,freq='W')
                  for x in zip(s,s.add(pd.offsets.MonthEnd()))]).explode("Weeks"))

u[['Volume','Sales']] = u[['Volume','Sales']].div(
                        u.groupby("Date")['Date'].transform("count"),axis=0)

print(u)

   ID     Date  Volume  Sales      Weeks
0   1  2020-02     2.5    1.0 2020-02-02
0   1  2020-02     2.5    1.0 2020-02-09
0   1  2020-02     2.5    1.0 2020-02-16
0   1  2020-02     2.5    1.0 2020-02-23
1   1  2020-03     1.6    1.2 2020-03-01
1   1  2020-03     1.6    1.2 2020-03-08
1   1  2020-03     1.6    1.2 2020-03-15
1   1  2020-03     1.6    1.2 2020-03-22
1   1  2020-03     1.6    1.2 2020-03-29
2   2  2019-12     1.2    1.6 2019-12-01
2   2  2019-12     1.2    1.6 2019-12-08
2   2  2019-12     1.2    1.6 2019-12-15
2   2  2019-12     1.2    1.6 2019-12-22
2   2  2019-12     1.2    1.6 2019-12-29
3   2  2019-10     1.0    2.5 2019-10-06
3   2  2019-10     1.0    2.5 2019-10-13
3   2  2019-10     1.0    2.5 2019-10-20
3   2  2019-10     1.0    2.5 2019-10-27

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM