Вопрос:
У меня есть образец данных.
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()