【问题标题】:Calculate the average of the rows for each group计算每组的行的平均值
【发布时间】:2019-01-25 09:40:54
【问题描述】:

我需要计算 DataFrame 中某一列的平均值,以便计算每一行的平均值,不包括在某个组中计算它的行​​的先前值。假设我们有这个数据框,这是预期的输出

有没有办法像按索引迭代每一行,在每次迭代中按索引添加前一行,然后计算平均值。我想知道是否有更有效的方法来做到这一点

unit    A      Expected 
T10     8      8
T10     7      7.5
T10     12     9
T11     10     10
T11     6      8
T12     17     17
T12     7      12
T12     3      9

【问题讨论】:

    标签: python python-3.x pandas data-science


    【解决方案1】:

    你可以使用expanding:

    df2 = df.groupby('unit')['A'].expanding().mean().reset_index()
    df['Expected'] = df2['A']
    

    【讨论】:

      【解决方案2】:

      DataFrameGroupBy.cumsum 与计数器除以GroupBy.cumcount

      g = df.groupby('unit')['A']
      df['Expected'] = g.cumsum().div(g.cumcount() + 1)
      print (df)
        unit   A  Expected
      0  T10   8       8.0
      1  T10   7       7.5
      2  T10  12       9.0
      3  T11  10      10.0
      4  T11   6       8.0
      5  T12  17      17.0
      6  T12   7      12.0
      7  T12   3       9.0
      

      【讨论】:

        【解决方案3】:

        要计算 pandas 中特定列的平均值,您需要做的就是使用 pandas 库的 mean 方法。

        mean = df["frequencies"].mean()
        

        其中 df 是数据框的名称,频率是您希望找到平均值的列

        【讨论】:

          猜你喜欢
          • 2021-07-17
          • 1970-01-01
          • 2019-04-03
          • 2014-04-23
          • 2021-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多