我有一个分类变量和两个数字列:
np.random.seed(123)
df = pd.DataFrame({'group' : ['a']*10+['b']*10,
'var1' : np.random.randn(20),
'var2' : np.random.randint(10,size=20)})
我想通过 找到过滤后group
的平均值,以按 group限制为前四分位值。也就是说,每个组的阈值将是:var1
df
var2
thresh = df.groupby('group')['var2'].quantile(0.75)
这是我想要结束的循环演示:
for group, frame in df.groupby('group'):
print(frame[frame.var2 >= frame.var2.quantile(0.75)].var1.mean())
# -1.4713362407192072
# 0.15512098976530683
结果应该是带有 ( group
, var
) 列的 DataFrame 或由 索引的 Series group
。我相信解决方案可能涉及.transform
/.apply
但被困在那里。