【问题标题】:Calculating geometric mean by group按组计算几何平均值
【发布时间】:2020-11-24 14:16:53
【问题描述】:

我有一个包含四列的数据集,类似于下面显示的前四列。我想添加另一列显示某些组的“价格”值的几何平均值,其中每个组由“类型”列确定。

我该怎么做?结果将是一个类似于下面标记为“geomean_price_bytype”的列。

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    GroupBy.transformgmean 一起使用:

    from scipy.stats.mstats import gmean
    
    #if necessary remove `,` and `$`
    #df['price'] = df['price'].str.lstrip('$').str.replace(',', '').astype(int)
    
    
    df['new'] = df.groupby('type')['price'].transform(gmean)
    

    或自定义 lambda 函数:

    gmean1 = lambda x: x.product() ** (1 / float(len(x)))
    df['new'] = df.groupby('type')['price'].transform(gmean1)
    

    【讨论】:

      【解决方案2】:

      所以基本上你有三个组。您想基于该组创建一个新列。

      def meanByGroup(x):
          if x == 111:
              return 245474
          elif x == 222:
              return 194223
          elif x == 333:
              return 124122
      

      然后df["geomean_price_bytype"] = df["type"].apply(meanByGroup)

      【讨论】:

        猜你喜欢
        • 2021-12-11
        • 2017-09-28
        • 2016-01-10
        • 2012-04-05
        相关资源
        最近更新 更多