我有一个带有日期、id和值的数据框
例如:
date id value
2016-08-28 A 1
2016-08-28 B 1
2016-08-29 C 2
2016-09-02 B 0
2016-09-03 A 3
2016-09-06 C 1
2017-01-15 B 2
2017-01-18 C 3
2017-01-18 A 2
我想应用元素的滚动平均值,一个接一个,结果如下:
date id value rolling_mean
2016-08-28 A 1 NaN
2016-08-28 B 1 NaN
2016-08-29 C 2 NaN
2016-09-02 B 0 0.5
2016-09-03 A 3 2.0
2016-09-06 C 1 1.5
2017-01-15 B 2 1.0
2017-01-18 C 3 2.0
2017-01-18 A 2 2.5
我最接近这一点的是:
grouped = df.groupby(["id", "value"])
df["rolling_mean"] = grouped["value"].shift(1).rolling(window = 2).mean()
但这返回了错误的值,因为它保持了剩余元素的顺序
有什么想法吗
提前谢谢大家,
像这样:
输出:
用id为的
groupby
修复代码您只需按
id
分组并使用transform
:输出:
相关问题 更多 >
编程相关推荐