繁体   English   中英

有没有办法同时在某个列上的 Pandas.groupby 中的 output df.min、df.max 和 df.mean?

[英]Is there a way to output df.min, df.max and df.mean in Pandas.groupby on a certain column at once?

所以我需要按“fh_status”列对行进行分组,然后为每个组执行“gini”的最小值、平均值和最大值(将有三个)。 我想出了这段代码:

m = (df2.groupby(['fh_status']).max().iloc[:, 2]) #iloc2 corresponds to gini column
n = (df2.groupby(['fh_status']).min().iloc[:, 2])
e = (df2.groupby(['fh_status']).mean().iloc[:, 2])
nl = '\n'
print(f' mean: {e} {nl} maximum: {m} {nl} minimum:{n}')

output:

mean: fh_status
free           38.170175
not free       39.750000
partly free    43.931250
Name: gini, dtype: float64 
 maximum: fh_status
free           10.0
not free        5.0
partly free     9.0
Name: polity09, dtype: float64 
 minimum:fh_status
free            6.0
not free      -10.0
partly free    -6.0
Name: polity09, dtype: float64

在一个字符串中使用这三种方法不起作用(AFAIK 它只打印后一个命令),所以出现了三个变量,它们有点笨拙。 Output 似乎是正确的,但我很确定有一种方法可以优化这一点并减少代码量。 或者不是吗?

是的,您可以使用.agg(..)并传递操作列表:

df2.groupby('fh_status')['gini'].agg(['min', 'max', 'mean'])

这将生成一个 dataframe 列,聚合( minmaxmean )作为行,组(您创建.groupby(..)的值)作为行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM