gpt4 book ai didi

python - 将 describe 函数应用于 pandas groupby 时如何忽略行的最大值和最小值

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:23 25 4
gpt4 key购买 nike

我正在使用 pandas groupby 函数并尝试获取分组结果的描述,但没有每个组的最大行和最小行。我找不到我的问题的正确答案。

data = {'class': ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b'],
'num': [-10,18,12,15,50, 10,60,51,54,100]}
df = pd.DataFrame(data)
df.groupby('class').describe()

输出:

         num
count mean std min 25% 50% 75% max
class
a 5.0 17.0 21.494185 -10.0 12.0 15.0 18.0 50.0
b 5.0 55.0 31.984371 10.0 51.0 54.0 60.0 100.0

我想要的结果是:

       num       
count mean std min 25% 50% 75% max
class
a 3.0 15.0 3.000000 12.0 13.5 15.0 16.5 18.0
b 3.0 55.0 4.582576 51.0 52.5 54.0 57.0 60.0

最佳答案

使用 transform和掩蔽:

df['max']=df.groupby('class')['num'].transform('max')
df['min']=df.groupby('class')['num'].transform('min')

mask = df['num'].ne(df['min'])&df['num'].ne(df['max'])

df.loc[mask,:].groupby('class')['num'].describe()

count mean std min 25% 50% 75% max
class
a 3.0 15.0 3.000000 12.0 13.5 15.0 16.5 18.0
b 3.0 55.0 4.582576 51.0 52.5 54.0 57.0 60.0

或者:

df.loc[mask, ['class', 'num']].groupby('class').describe()
num
count mean std min 25% 50% 75% max
class
a 3.0 15.0 3.000000 12.0 13.5 15.0 16.5 18.0
b 3.0 55.0 4.582576 51.0 52.5 54.0 57.0 60.0

关于python - 将 describe 函数应用于 pandas groupby 时如何忽略行的最大值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54232069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com