如何计算 n 行的平均值并将答案粘贴到 pandas 列的下 n 行?
How to compute the average of n rows and paste the answer to next n rows of pandas column?
我有一个每周销售数据框
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'])
然而 returns 我的移动平均线如下
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
通过 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
IIUC
df.at[4:,'4-PreviousWeekAverage']=df.Sales.iloc[:4].mean()
df
Out[344]:
Sales weekNum 4-PreviousWeekAverage
0 83 1 NaN
1 139 2 NaN
2 207 3 NaN
3 278 4 NaN
4 274 5 176.75
5 291 6 176.75
6 319 7 176.75
7 305 8 176.75
我有一个每周销售数据框
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'])
然而 returns 我的移动平均线如下
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
通过 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
IIUC
df.at[4:,'4-PreviousWeekAverage']=df.Sales.iloc[:4].mean()
df
Out[344]:
Sales weekNum 4-PreviousWeekAverage
0 83 1 NaN
1 139 2 NaN
2 207 3 NaN
3 278 4 NaN
4 274 5 176.75
5 291 6 176.75
6 319 7 176.75
7 305 8 176.75