панды, получающие максимальное и минимальное значения для определенного другого значения столбца - PullRequest
0 голосов
/ 05 июля 2018

У меня следующий пример набора данных.

 raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer 
 McDaniel'],
            'age': [20, 19, 22, 21],
            'favorite_color': ['blue', 'blue', 'yellow', "green"],
            'grade': [88, 92, 95, 70]}

 df = pd.DataFrame(raw_data)
 df.head()

Мне интересно найти максимальную, минимальную оценку для определенного цвета, скажем «синий», как я могу это выяснить.

У меня есть следующее решение ... есть ли лучший способ. У меня огромная производительность набора данных также является критерием при выборе доступных вариантов.

for i in df.index:
    if df.at[i, 'server_ip'] == 'blue':
        if min_grade > df.at[i,'grade']:
           min_grade = df.at[i,'grade']
        if max_grade < df.at[i,'grade']:
           max_grade = df.at[i,'grade']

1 Ответ

0 голосов
/ 05 июля 2018

Я бы лично использовал .loc здесь

df.loc[df['favorite_color']=='blue','grade'].max()
df.loc[df['favorite_color']=='blue','grade'].min()

Редактировать 1

Если вы не хотите выполнять двойной поиск, сначала сохраните результат .loc, а затем выполните агрегирование

data = df.loc[df['favorite_color']=='blue','grade']
min = data.min()
max = data.max()

Редактировать 2

Если вы хотите найти максимальный и минимальный значения для каждого цвета, используйте groupby

grouped = df.groupby('favorite_color')['grade']
max = grouped.max()
min = grouped.min()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...