【问题标题】:Pandas compute mean over top n records of a groupPandas 计算组中前 n 条记录的平均值
【发布时间】:2021-11-01 13:19:03
【问题描述】:

假设我有这样的 pandas DataFrame:

   id  value
0   1      1
1   1      2
2   1      3
3   2      4
4   2      3
5   2      2
6   2      1
7   3      1

我想计算前 2 条记录的每个 id 的平均值,并将结果附加为新列,如:

   id  value  top_2_mean
0   1      1         1.5
1   1      2         1.5
2   1      3         1.5
3   2      4         3.5
4   2      3         3.5
5   2      2         3.5
6   2      1         3.5
7   3      1           1

【问题讨论】:

    标签: python pandas group-by mean top-n


    【解决方案1】:

    对第一个2 值和平均值使用GroupBy.transform 和lambda 函数:

    df['top_2_mean'] = df.groupby('id')['value'].transform(lambda x: x.head(2).mean())
    #alternative    
    #df['top_2_mean'] = df.groupby('id')['value'].transform(lambda x: x.iloc[:2].mean())
    print (df)
       id  value  top_2_mean
    0   1      1         1.5
    1   1      2         1.5
    2   1      3         1.5
    3   2      4         3.5
    4   2      3         3.5
    5   2      2         3.5
    6   2      1         3.5
    7   3      1         1.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-01
      • 2021-11-08
      • 2019-09-09
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      相关资源
      最近更新 更多