【问题标题】:Python pandas: calculate rolling mean based on multiple criteriaPython pandas:根据多个标准计算滚动平均值
【发布时间】:2019-08-15 02:34:44
【问题描述】:
我有一个数据框,显示了过去 10 天一组股票的收盘价。它有一个日期时间指数和股票可以通过他们的名字/代码来识别。你能帮我弄清楚如何计算数据框中每只股票的 4 天移动平均线吗?
我尝试使用 pd.DataFrame.rolling().mean() 方法,但它只是给出了整个数据集的滚动平均值。不知道下一步该去哪里......
sampleData = hundredDayData['2019-03-11':'2019-03-20']
sampleData['Close: 4 day mean'] = sampleData['Close'].rolling(window=4).mean()
sampleData.head(24)
【问题讨论】:
标签:
python
python-3.x
pandas
【解决方案1】:
df = pd.DataFrame({'code': ['a']*10+['b']*10, 'Close': [1]*20})
df.groupby('code')['Close'].rolling(window=4).mean().reset_index()
注意:如果你的code's都是乱码(如下图),那么你应该使用
df = pd.DataFrame({'code': ['a']*10+['b']*10+['a']*10, 'Close': [1]*30})
rolling = df.groupby('code')['Close'].rolling(window=4).mean().reset_index().set_index('level_1').rename(
columns={'Close':'rolling'})[['rolling']]
df.merge(rolling, left_index=True, right_index=True)
在组级别计算滚动平均值,但使用索引将其作为新列合并回主数据框。