我想创建一个滚动窗口的函数,它在时间上移动(例如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