您可以重新采样没有日期的系列吗?

时间:2018-07-12 17:14:55

标签: python-3.x pandas

我有一个从1到420个月(35年)的时间序列。我想使用每年12个月的平均值将其转换为年度系列,这样我就可以输入一个具有年度数据点的数据框。我使用步距为12的范围进行设置,但有点混乱。理想情况下,希望使用重新采样功能,但由于没有日期,因此遇到了麻烦。可以解决这个问题吗?

1 个答案:

答案 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开始。