所以在我的数据框中,我有一个名为diff的列,其中包含正值和负值 .
date, id, diff, moving_avg
2017-01-01, 123, 5, 5
2017-01-02, 123, -3, 5
2017-01-03, 123, 4, (5+4)/2 = 4.5
2017-01-04, 123, 6, (4+6)/2 = 5
2017-01-05, 123, 3, (4+6+3)/3 = 4.33
我目前正在计算3天移动平均线:
df['mov_avg_diff'] = df.groupby(['id'], as_index=False)[['diff']].rolling(
3, min_periods=1).mean().fillna(0).reset_index(0, drop=True)
但这将包括负值,从而扭转移动平均线 . 是否有一个简单的修复我可以添加只使用正值?
编辑:添加更多行/预期输出
1 回答
我相信你可以使用像df [df> 0]这样的布尔数组用NaN替换负值 . 根据文档,大熊猫的方法将正确处理NaN:https://pandas.pydata.org/pandas-docs/stable/missing_data.html
输入(pandas_data.csv):
码:
结果: