【问题标题】:Shifted results in pandas rolling mean大熊猫滚动平均值的移位结果
【发布时间】:2018-11-22 04:01:32
【问题描述】:

在下面的(前 5 行)结果中,您可以看到 Freq 列和使用 pandas 计算的滚动均值 (3) 列 MMeans

    Freq      MMeans
0    215         NaN
1    453         NaN
2    277  315.000000
3     38  256.000000
4      1  105.333333

我期待MMeans 从索引 1 开始,因为 1 是 (0-1-2) 的平均值。 rolling 方法是否有我缺少的选项?

编辑 1

print(pd.DataFrame({
    'Freq':eff,
    'MMeans': dF['Freq'].rolling(3).mean()}))

编辑 2 抱歉@Yuca 没有我想的那么清楚。接下来是我希望 pandas 返回的列:

    Freq      MMeans
0    215         NaN
1    453  315.000000
2    277  256.000000
3     38  105.333333
4      1   29.666667

这不是min_periods=2返回的结果

【问题讨论】:

  • 不看你的语法很难知道你做了什么。你为min_periods 使用了什么值?
  • 你怎么能在最后一行得到 29?另外,通过使用与你的星相同的逻辑,你的最后一行应该是 NAN
  • 我给出的列表是部分的,完整的要长得多。这是一个链接,其中包含更长的列表视图和my code 以产生我所期望的结果。

标签: python pandas mean


【解决方案1】:

使用min_periods =1

df['rol_mean'] = df['Freq'].rolling(3,min_periods=1).mean()

输出:

   Freq      MMeans    rol_mean
0   215         NaN  215.000000
1   453         NaN  334.000000
2   277  315.000000  315.000000
3    38  256.000000  256.000000
4     1  105.333333  105.333333

【讨论】:

  • 抱歉,我接受了您的回答,但这并不是我所期望的:MMeans 列应以NaN 开头,然后是 315.000000 等。正如我在问题中所说,我想要数字从索引 1 开始。
猜你喜欢
  • 2019-02-13
  • 2019-07-27
  • 2017-02-24
  • 2021-10-23
  • 1970-01-01
  • 2018-10-01
  • 1970-01-01
  • 2018-04-26
相关资源
最近更新 更多