id/group 的移动平均线,定义的区间为 python
Moving average by id/group with a defined interval in python
给出的是一个包含以下列和值的 csv 数据集(示例)。
我想在我的 csv 数据中添加一个新列,并根据每个 ID 使用 S1 的移动平均值。 S1 是我的测量值。时间范围 t 应该是 3.That 我的数据集当前的样子。
id S1
1 3
1 4
1 2
1 6
1 9
2 3
2 1
2 2
2 3
2 8
2 6
3 1
3 4
3 2
3 8
3 5
这就是我想做的事情:
id S1 movA
1 3 NaN
1 4 NaN
1 2 3.000
1 6 4.000
1 9 5.667
2 3 NaN
2 1 NaN
2 2 2.000
2 3 2.000
2 8 4.333
2 6 5.333
3 1 NaN
3 4 NaN
3 2 2.333
3 8 4.667
3 5 5.000
使用 groupby
和 rolling
与 mean
g = df.groupby('id').S1
rolls = [2, 3, 4, 5]
pd.concat([g.rolling(i).mean() for i in rolls], axis=1, keys=rolls)
给出的是一个包含以下列和值的 csv 数据集(示例)。 我想在我的 csv 数据中添加一个新列,并根据每个 ID 使用 S1 的移动平均值。 S1 是我的测量值。时间范围 t 应该是 3.That 我的数据集当前的样子。
id S1
1 3
1 4
1 2
1 6
1 9
2 3
2 1
2 2
2 3
2 8
2 6
3 1
3 4
3 2
3 8
3 5
这就是我想做的事情:
id S1 movA
1 3 NaN
1 4 NaN
1 2 3.000
1 6 4.000
1 9 5.667
2 3 NaN
2 1 NaN
2 2 2.000
2 3 2.000
2 8 4.333
2 6 5.333
3 1 NaN
3 4 NaN
3 2 2.333
3 8 4.667
3 5 5.000
使用 groupby
和 rolling
与 mean
g = df.groupby('id').S1
rolls = [2, 3, 4, 5]
pd.concat([g.rolling(i).mean() for i in rolls], axis=1, keys=rolls)