在 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
我想创建一个滚动函数 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