gpt4 book ai didi

python - 如何在 Pandas 中将月度数据转换为季度数据

转载 作者:太空狗 更新时间:2023-10-29 16:52:59 33 4
gpt4 key购买 nike

我有月度数据。我想将其转换为 3 个月的“期间”,其中 q1 从 1 月开始。因此,在下面的示例中,前 3 个月的聚合将转换为 q2 的开始(所需格式:1996q2)。将 3 个月值混合在一起得到的数据值是 3 列的平均值。从概念上讲,并不复杂。有谁知道如何一口气做到这一点?潜在地,我可以通过循环做很多艰苦的工作,然后硬编码出来,但我是 pandas 的新手,正在寻找比蛮力更聪明的东西。

1996-04   1996-05 1996-06  1996-07 .....25          19       37      40

所以我在寻找:

1996q2  1996q3   1996q4  1997q1  1997q2 ..... avg      avg      avg     ...     ...

最佳答案

你可以使用pd.PeriodIndex(..., freq='Q')连同groupby(..., axis=1) :

In [63]: df
Out[63]:
1996-04 1996-05 2000-07 2000-08 2010-10 2010-11 2010-12
0 1 2 3 4 1 1 1
1 25 19 37 40 1 2 3
2 10 20 30 40 4 4 5

In [64]: df.groupby(pd.PeriodIndex(df.columns, freq='Q'), axis=1).mean()
Out[64]:
1996Q2 2000Q3 2010Q4
0 1.5 3.5 1.000000
1 22.0 38.5 2.000000
2 15.0 35.0 4.333333

更新:将结果 DF 中的列作为 period dtype 的字符串获取:

In [66]: res = (df.groupby(pd.PeriodIndex(df.columns, freq='Q'), axis=1)
.mean()
.rename(columns=lambda c: str(c).lower()))

In [67]: res
Out[67]:
1996q2 2000q3 2010q4
0 1.5 3.5 1.000000
1 22.0 38.5 2.000000
2 15.0 35.0 4.333333

In [68]: res.columns.dtype
Out[68]: dtype('O')

关于python - 如何在 Pandas 中将月度数据转换为季度数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40497199/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com