我有一个图表,其中x轴是日期,y轴是值,每行都是唯一的客户
这是由具有以下结构的数据帧构成的:
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?
答案 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