我有每月的数据。我想把它转换成3个月的“周期”,其中q1从1月开始。因此,在下面的示例中,前3个月的聚合将转换为第2季度的开始(所需格式:1996q2)。将3个月的值混合在一起得到的数据值是3列的平均值。从概念上讲,并不复杂。有谁知道如何一次完成吗?潜在地,我可以通过循环做很多艰苦的工作,只是硬编码出来,但我是新的Pandas和寻找比蛮力更聪明的东西。
1996-04 1996-05 1996-06 1996-07 .....
25 19 37 40
所以我在寻找:
1996q2 1996q3 1996q4 1997q1 1997q2 .....
avg avg avg ... ...
3条答案
按热度按时间sirbozc51#
您可以将pd.PeriodIndex(...,freq='Q')与groupby(..., axis=1)结合使用:
UPDATE:获取结果DF中的列作为字符串,而不是
period
dtype:pbwdgjma2#
只是为了添加到@MaxU上面的答案,将得到的
PeriodIndex
列转换回str
,并在年份和季度号之间添加空格(即,1999 Q1
,而不是1999Q1
),可以这样做:eh57zj3b3#
如果你想让你的季度从四月而不是一月开始,那么你必须向参数'feq'传递稍微不同的值,即freq ='Q-MAR',它将计算q1(四月到六月),q2(七月到九月),q3(十月到十二月)和q4(一月到三月)
enter image description here