簡體   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