在 pandas 中手动创建滚动 window

Manually Creating rolling window in pandas

我想创建一个滚动函数 window 随时间移动(示例 window_size=2 秒)并给出列 'temp'.

的平均值

这是数据集:

data = { 
  'time': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 
  'temp': [20, 26, 28, 30, 31, 33, 29, 34, 16, 35, 38, 31]
}

我想要的数据集

data = {
  'time': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 
  'temp': [20, 26, 28, 30, 31, 33, 29, 34, 16, 35, 38, 31],
  'mean': [23, 27, .....]

我尝试了DataFrame.rolling方法,但我只能根据固定的window大小得到平均值。我需要具有由另一列定义的灵活 window 大小的列的平均值。

试试这个:

df_in = pd.DataFrame(data)

df_in['mean'] = df_in['temp'].rolling(2).mean().shift(-1)

输出:

    time  temp  mean
0      1    20  23.0
1      2    26  27.0
2      3    28  29.0
3      4    30  30.5
4      5    31  32.0
5      6    33  31.0
6      7    29  31.5
7      8    34  25.0
8      9    16  25.5
9     10    35  36.5
10    11    38  34.5
11    12    31   NaN