如何计算滚动平均值或移动平均值,考虑到我已经看到的所有项目。
假设我有一个如下的数据框:
col new_col
0 1 1
1 2 1.5
2 3 2
等等。现在我想添加一个新列,计算该列到目前为止所有项的平均值。 指定窗口将意味着我会得到前几个项目的Nan,然后它只执行滚动窗口。但我需要像上面这样的东西。
如何计算滚动平均值或移动平均值,考虑到我已经看到的所有项目。
假设我有一个如下的数据框:
col new_col
0 1 1
1 2 1.5
2 3 2
等等。现在我想添加一个新列,计算该列到目前为止所有项的平均值。 指定窗口将意味着我会得到前几个项目的Nan,然后它只执行滚动窗口。但我需要像上面这样的东西。
pd.options.mode.chained_assignment = None
部分,它也会触发 SettingsWithCopyWarning。但它确实能够完成工作:# Libraries
import pandas as pd
import numpy as np
# Settings
pd.options.mode.chained_assignment = None
# Dataframe with desired input
df = pd.DataFrame({'col':[1,2,3]})
# Make room for a new column
df['new_col'] = np.nan
# Fill the new column with values
for i in df.index + 1:
if i == 0:
df['new_col'].iloc[i] = np.nan
else:
df['new_col'].iloc[i-1] = pd.rolling_mean(df.col.iloc[:i].values, window = i)[-1]
print(df)
df.expanding().mean()
。我找不到更好的重复目标,但是那篇帖子总结了扩展计算。 - ayhan