[英]Pandas: find column min and max ranges by group
I have a data frame like so:我有一个像这样的数据框:
df = pd.DataFrame({
'A':np.random.random(20),
'B':np.random.random(20),
'Gen': [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4]
})
Is there a simple way with pandas to find the range (min and max values) in each column by group 'Gen'? pandas 是否有一种简单的方法可以按“Gen”组在每列中查找范围(最小值和最大值)? In real life, I can have lots of columns A, B, ... (>20).
在现实生活中,我可以有很多列 A、B、...(>20)。 The result could look something like:
结果可能类似于:
Var Gen Min Max
A 1 x x
B 1 x x
A 2 x x
...
You can melt
to reshape, then groupby
+ agg
to aggregate per group:您可以
melt
重塑,然后groupby
+ agg
聚合每组:
(df.melt(id_vars='Gen', var_name='Var')
.groupby(['Var', 'Gen'])['value']
.agg(['min', 'max'])
#.reset_index() # uncomment to have Gen/Var as columns
)
Alternatively, aggregate first, then stack
:或者,先聚合,然后
stack
:
df.groupby('Gen').agg(['min', 'max']).stack(level=0)
output: output:
min max
Var Gen
A 1 0.009241 0.813241
2 0.142218 0.751106
3 0.005829 0.991914
4 0.033108 0.579354
B 1 0.241094 0.990492
2 0.030335 0.848735
3 0.209076 0.785530
4 0.277970 0.962307
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.