pandas получает максимальное и минимальное значение для другого значения столбца

Вопрос: У меня есть образец данных. 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() Мне интересно найти max, min grade для определенного цвета, скажем, "синий", как я могу это узнать. Решение у меня

Вопрос:

У меня есть образец данных.

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()

Мне интересно найти max, min grade для определенного цвета, скажем, “синий”, как я могу это узнать.

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

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’] Лучший ответ:

Я бы лично использовал.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

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

grouped = df.groupby(‘favorite_color’)[‘grade’] max = grouped.max() min = grouped.min()

Оцените статью
Добавить комментарий