查找高于平均熊猫的ID

时间:2020-07-27 19:52:10

标签: python pandas matplotlib

我有一个图表,其中x轴是日期,y轴是值,每行都是唯一的客户

sample graph

这是由具有以下结构的数据帧构成的:

  date     |cust_id|value
  01/01/18 |1      |2349
  02/01/18 |1      |242
  04/01/18 |1      |24429
  06/01/18 |1      |21412
  01/01/19 |2      |2349

平均行是通过取每个日期的平均值来制成的:

agg = df.groupby('date').agg('mean').reset_index()

如何隔离高于平均线的ID?

3 个答案:

答案 0 :(得分:0)

df.merge(df.groupby('date').agg(m=('value','mean')).reset_index(),
         on='date').query('value >= m').drop(columns=['m'])

答案 1 :(得分:0)

您可以使用transform使分组平均值与原始值对齐并进行比较:

means = df.groupby('date')['value'].transform('mean')

df[df['value'] > means]

答案 2 :(得分:0)

转换,布尔选择以提取数据框

df=df.assign(agg=df.groupby('date').cust_idvalue.transform('mean'))
df[df['cust_idvalue']>df['agg']]


      date  cust_idvalue    agg
04/01/18     1         24429  12108
06/01/18     1         21412  12108