![](/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.