gpt4 book ai didi

python - pandas groupby 中的分位数阈值/过滤器

转载 作者:太空宇宙 更新时间:2023-11-04 08:38:46 34 4
gpt4 key购买 nike

我有一个分类变量和两个数值列:

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 找到过滤后 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 或由 group 索引的 Series。我相信解决方案可能涉及 .transform/.apply 但我被困在那里。

最佳答案

你在找这个吗?

new = df.groupby('group').apply(lambda x : \
x[x.var2>=x.var2.quantile(0.75)] \
.var1.mean()).to_frame()
             0group          a     -1.471336b      0.155121

关于python - pandas groupby 中的分位数阈值/过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46474393/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com