python - 如何计算 n 行的平均值并将答案粘贴到 pandas 列的下 n 行?
问题描述
我有一个每周销售数据框
Sales weekNum
83 1
139 2
207 3
278 4
274 5
291 6
319 7
305 8
我想计算前 4 周的平均值并将其粘贴到第 5 到第 8 周的索引中
我希望我的输出数据集如下所示
Sales weekNum 4-PreviousWeekAverage
83 1
139 2
207 3
278 4
274 5 176.75
291 6 176.75
319 7 176.75
305 8 176.75
同样,我也想计算 8 周平均值并将其粘贴到 5 到 8 的索引中
我试过了
for i in [4, 8]:
newColumnName1 = '%s-PreviousWeekAverage' % i
df[newColumnName1] = np.nan
for ix in df.index:
if ix - i >= 0:
df.loc[ix, newColumnName1] = np.mean(sampledf.loc[ix-i:ix-1,'Sales'])
然而,它返回我的移动平均线如下
Sales weekNum 4-PreviousWeekAverage
83 1
139 2
207 3
278 4
274 5 176.75
291 6 224.5
319 7 262.5
305 8 290.5
我在循环时遇到问题,无法找出正确的脚本。因此将感谢您的帮助。
解决方案
groupby
在 weekNum 和transform
by mean
。
df.groupby((df.weekNum - 1) // 4).Sales.transform('mean').shift(4)
0 NaN
1 NaN
2 NaN
3 NaN
4 176.75
5 176.75
6 176.75
7 176.75
Name: Sales, dtype: float64
推荐阅读
- network-traffic - D-ITG 流量生成器 绑定到接收方错误 接收方错误
- javascript - Redux mapStateToProps 在我的 mapbox 地图中不起作用
- redirect - IIS 重写规则以重定向 url
- python - Pygame,如果按下键然后释放动作
- javascript - ReactJS - 在运行功能之前等待cookie加载?
- r - R:在带有自由 Y 轴的分面图上设置刻度标签限制
- algorithm - 哪个更大:O(N^2 * log(N^2)) 还是 O(N^3)?
- c - 在 C 中读取文件时,文件是否需要与程序位于同一文件夹中?如果是这样,有没有办法读取另一个文件夹中的文件?
- boost-asio - boost asio中的executor和io_context是什么关系?
- python-3.x - Tkinter:为显示在两个不同 Treeview 中的相同数据库值定义两个游标时出现问题