![](/img/trans.png)
[英]How to apply df.min() and df.max() distributively over many DataFrames
[英]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 列,聚合( min
, max
, mean
)作为行,组(您创建.groupby(..)
的值)作为行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.