Pandas:一次计算n个滚动行的所有列的平均值

时间:2017-02-01 22:44:11

标签: python pandas

我要做的是这个...我有时间序列,我想计算滚动平均值,跨越多列的n行。 我最初做的是制作另一列,其中包含每行的平均值,然后对n行进行标准滚动平均。 但是,当我在某些列中没有值时会抛出我的计算值。

示例:

Col1 | Col2 | Col3 | Avg
10   | 20   |      | 15
     | 10   |      | 10
10   | 15   |  20  | 15

平均滚动平均值:13.33

虽然它应该是:14.16

以下是适用于我的所有数字的示例......

Col1 | Col2 | Col3 | Avg 
10   | 20   |   15 | 15
10   | 10   |   10 | 10
10   | 15   |   20 | 15

平均滚动平均值:13.33

虽然它应该是:13.33

我能做的是手动循环......我还可以添加第二列,每行包含多个元素。

但有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

np.nanmean将对多维数组中的所有内容进行平均。

np.nanmean(df.values)

14.166666666666666

以滚动的3个时段方式使用它,你可以这样做

pd.Series({df.index[i]: np.nanmean(df.iloc[i-2:i+1].values) for i in range(2, len(df))})

2    14.166667
dtype: float64