Bra*_*mon 2 python pandas split-apply-combine pandas-groupby
我有一个分类变量和两个数字列:
np.random.seed(123)
df = pd.DataFrame({'group' : ['a']*10+['b']*10,
'var1' : np.random.randn(20),
'var2' : np.random.randint(10,size=20)})
Run Code Online (Sandbox Code Playgroud)
我想通过 找到过滤后group的平均值,var1以按 group限制df到前四分位var2数值。也就是说,每个组的阈值是:
thresh = df.groupby('group')['var2'].quantile(0.75)
Run Code Online (Sandbox Code Playgroud)
这是我想要结束的一个循环演示:
for group, frame in df.groupby('group'):
print(frame[frame.var2 >= frame.var2.quantile(0.75)].var1.mean())
# -1.4713362407192072
# 0.15512098976530683
Run Code Online (Sandbox Code Playgroud)
结果应该是一个带有 ( group, var) 列的 DataFrame或一个由 索引的系列group。我相信解决方案可能涉及.transform/.apply但被困在那里。
你在找这个吗?
new = df.groupby('group').apply(lambda x : \
x[x.var2>=x.var2.quantile(0.75)] \
.var1.mean()).to_frame()
Run Code Online (Sandbox Code Playgroud)
0 团体 -1.471336 乙 0.155121
| 归档时间: |
|
| 查看次数: |
2438 次 |
| 最近记录: |