手动在pandas中创建滚动窗口



我想创建一个滚动窗口的函数,它在时间上移动(例如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方法,但我只能根据固定的窗口大小获得平均值。我需要由另一列定义的具有灵活窗口大小的列的平均值。

试试这个:

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

最新更新