移动平均值或滚动平均大熊猫没有任何窗口大小

时间:2014-05-17 20:48:01

标签: python pandas mean moving-average

我如何计算滚动平均值或移动平均线,在此我考虑到目前为止所见的所有项目。

假设我有一个类似下面的数据框

   col   new_col
0    1      1
1    2      1.5
2    3      2

等等。 现在我想添加一个新列,其中我将col的所有项目的平均值计算到该点。 指定一个窗口意味着我将前几个作为Nan,然后它只做一个滚动窗口。但我需要像上面这样的东西。

1 个答案:

答案 0 :(得分:0)

以下代码段将完全符合您的要求。尽管如此,还有很大的改进空间。它使用带有if-else状态的for循环。使用矢量化函数肯定有更快的方法。如果省略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)

输出:

enter image description here