我有一个从1到420个月(35年)的时间序列。我想使用每年12个月的平均值将其转换为年度系列,这样我就可以输入一个具有年度数据点的数据框。我使用步距为12的范围进行设置,但有点混乱。理想情况下,希望使用重新采样功能,但由于没有日期,因此遇到了麻烦。可以解决这个问题吗?
答案 0 :(得分:3)
在这种情况下,无需重新采样。只需使用groupby
进行整数除法即可获得多年来的平均值。
import numpy as np
import pandas as pd
# Sample Data
np.random.seed(123)
df = pd.DataFrame({'Months': np.arange(1,421,1),
'val': np.random.randint(1,10,420)})
# Create Yearly average. 1-12, 13-24, Subtract 1 before // to get this grouping
df.groupby((df.Months-1)//12).val.mean().reset_index().rename(columns={'Months': 'Year'})
输出:
Year val
0 0 3.083333
1 1 4.166667
2 2 5.250000
3 3 4.416667
4 4 5.500000
5 5 4.583333
...
31 31 5.333333
32 32 5.000000
33 33 6.250000
34 34 5.250000
可以随时将1
添加到“年”列中,或进行其他操作以使其与其他年df
中的索引保持一致。否则,您可以使用df.groupby((df.Months+11)//12).val().mean()
来使Year
从1开始。