python - 如何计算熊猫数据框中每个行子集的移动平均值?
问题描述
我dataframe
看起来像这样:
Region ... Value
'A' ... 1
'A' ... 2
'A' ... 3
'A' ... 4
'B' ... 1
'B' ... 5
'B' ... 4
我需要做的是添加一个新列“MA”,其中包含仅考虑相对于同一“区域”的行计算的移动平均值:
Region ... Value MA
'A' ... 1 NaN
'A' ... 2 1.5
'A' ... 3 2.5
'A' ... 4 3.5
'B' ... 1 NaN
'B' ... 5 3
'B' ... 4 4.5
我尝试了这样的循环,因为我有一个names
包含所有可能区域名称的列表:
for i in name:
dataframe['MA'] = dataframe.loc[dataframe['Region'] == str(i), 'Value'].rolling(window=2).mean()
但我得到一列只有 NaN。
解决方案
试试rolling
+groupby
df['new'] = df.groupby('Region').rolling(2).mean().reset_index(level=0,drop=True)
df
Region ... Value new
0 'A' ... 1 NaN
1 'A' ... 2 1.5
2 'A' ... 3 2.5
3 'A' ... 4 3.5
4 'B' ... 1 NaN
5 'B' ... 5 3.0
6 'B' ... 4 4.5
推荐阅读
- angular - 我创建了一个表单,在获取数据后将其存储在数组中,并希望在表单下方的表格中显示
- javascript - 在chart.js中更改图例框的颜色和x网格线的颜色
- c# - Equivalent AES encryption code in c# .net core
- epplus - 如何在新的 EPPlus Excel 包中实现 SetBorder 和 VAlign HAlign
- python - 在 django 中重新加载虚拟环境
- android - 反应原生图像调整大小裁剪图像
- python - 列表元素在 0 元素之后等于 0
- python - Python - 从 SQLite 游标实例化对象
- node.js - 通过 nodemailer 使用 webmail 发送电子邮件
- python - Python中的颜色