【问题标题】:how to calculate rolling mean for all values of a column of a dataframe in python如何计算python中数据框列的所有值的滚动平均值
【发布时间】:2019-10-25 17:35:41
【问题描述】:

我有一个包含 A、B 和 C 列的数据框。C 的值为 1、2、3、4。我想创建另一列 D,其值为 - NaN、1.5 (=(1+2)/2 ), 2 (=(1+2+3)/3, 2.5(=(1+2+3+4)/4)。基本上是从第一个元素到第 i 个元素的滚动平均值,必须计算滚动平均值。 感谢您的帮助。

我正在使用 python 并尝试了 rolling.mean() 但 windows 参数 - 无法使用。

【问题讨论】:

  • “但是 windows 参数 - 无法使用” - 你究竟是如何“无法”使用它的?你尝试了什么,出了什么问题?请发布您遇到的任何错误。
  • 您好 ForceBru,windows 参数提供了 2,3 或 n 个先前条目的固定窗口。下一列理想情况下应该计算前 2、3、4、5、6、....、n 个条目的平均值。所以 windows 的单一价值对我没有帮助。如果我做错了什么,请告诉我。

标签: python mean rolling-computation


【解决方案1】:

您可以使用cumulative sum 计算之前元素的总和,然后将这些总和除以 sum 中使用的元素数。这是一个例子:

df = pd.DataFrame(data={'C': [1, 2, 3, 4]})
df['D'] = df['C'].cumsum() / range(1, df.shape[0] + 1)

【讨论】:

    【解决方案2】:

    Pandas 有一个内置的“扩展”方法,可以完全满足您的需求。

    df = pd.DataFrame({'C': [1, 2, 3, 4]})
    df['D']=df['C'].expanding(2).sum()/df['C'].expanding(2).count()
    print(df)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      相关资源
      最近更新 更多