Как лучше всего извлекать определенные значения из большого фрейма данных

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

Приведите пример фрейма данных ниже (фактический список сайтов и серверов для каждого сайта очень большой), как мне извлечь / распечатать одно значение DSKPERCENT_MEAN для каждого сайта?

 Site  Server           DSKPERCENT      DSKPERCENT_MEAN
A      1                12                 11
A      2                10                 11
A      3                11                 11
B      1                9                  9
B      2                12                 9
B      3                7                  9
C      1                12                 13
C      2                12                 13
C      3                16                 13
  

Ответ №1:

Вы имеете в виду, что хотите (?):

 df.groupby('Site')['DSKPERCENT_MEAN'].max()
  

Ответ №2:

 df.groupby(['Site'])['DSKPERCENT_MEAN'].mean()
  

Комментарии:

1. @Subbu не будет ли эта команда вычислять среднее значение на основе групп ‘Site’ и ‘DSKPERCENT’? Я уже вычислил значение DSKPERCENT_MEAN, мне просто нужно извлечь уникальное вычисленное среднее значение для каждого сайта

2. @odonnry изменил ответ, чтобы извлекать уникальные значения из DSKPERCENT_MEAN

Ответ №3:

Далее из ответа Serial Lazer. Я полагаю, вам не нужно добавлять еще один столбец [‘DSKPERCENT_MEAN’], поскольку все сайты имеют одинаковое среднее значение. Если вы хотите создать новый фрейм данных, который выдает только среднее значение DSKPERCENT, я предлагаю использовать приведенный ниже код:

 df1 = df.groupby('Site')['DSKPERCENT'].mean().to_frame(name='DSKPERCENT_MEAN').reset_index()
  

.to_frame(name = ‘DSKPERCENT_MEAN’) позволяет создать новый фрейм данных из результата Groupby
.reset_index() сбрасывает столбец ‘DSKPERCENT_MEAN’ в ту же строку, что и ‘Site’

вывод df1:

      Site   DSKPERCENT_MEAN
0    A      11
1    B      9
2    C      13