Как игнорировать максимальное и минимальное количество строк при применении функции description к группе панд

Я полагаю, вы имеете в виду r = +_;? В этом случае это преобразование параметра в Number. Скажем, _ - '12 .3 ', затем +'12.3' возвращает 12.3. Поэтому в цитируемом заявлении +_ присваивается значение r.

1
задан Georgy 17 January 2019 в 09:47
поделиться

2 ответа

Другой метод, использующий apply(), idxmax() и idxmin()

>>df.groupby('class').apply(lambda x: x.drop([x['num'].idxmax(),x['num'].idxmin()])).rename_axis([None,None]).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

Объяснение: Сгруппировать по class и удалить max и min Индекс значений из каждой группы. затем выполните групповую операцию на class и вызовите функцию describe().

0
ответ дан anky_91 17 January 2019 в 09:47
поделиться

Используя 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
0
ответ дан Sandeep Kadapa 17 January 2019 в 09:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: