2

我有如下数据框:

df = pd.DataFrame({"VALUE" : [100, 200, 100, 300, 500],
                   "PRODUCT_ID" : [599, 200, 599, 599, 200],
                   "STATUS" : ["active", "active", "not_active", "unknown", "active"], 
                   "CLIENT" : ["1", "1", "2", "2", "1"]})

我需要为每个“活动”计算平均值中位数最大值 。我需要 df 这样的东西:VALUEPRODUCT_IDSTATUSCLIENT

AVG = 266,6因为: (500+200+100) : 3
MED = 200?
MAX = 500因为 500 是客户端 1 的最大主动聚合值

在此处输入图像描述

4

2 回答 2

3

尝试:

(df.query('STATUS=="active"')
        .groupby(['CLIENT'])['VALUE']
        .agg(['mean','median','max'])
        .reindex(df.CLIENT.unique())
     )

输出:

              mean  median    max
CLIENT                           
1       266.666667   200.0  500.0
2              NaN     NaN    NaN
于 2020-12-29T19:59:16.957 回答
1

你可以试试这个:

  df[df['STATUS'] == 'active'].groupby(['PRODUCT_ID', 'CLIENT']).agg(['mean','median','max'])

输出:

                 VALUE
                 mean   median  max
         PRODUCT_ID CLIENT          
          200       1   350 350 500
          599       1   100 100 100
于 2020-12-29T20:09:54.270 回答