Значения Python Dataframe для столбца на основе максимального значения группы - PullRequest
1 голос
/ 20 октября 2019

У меня есть следующий фрейм данных

   id   Area Country
0  11  34.45  Norway
1  12  30.25      UK
2  13  16.70    Iran
3  11  35.45  Sweden
4  13  20.22    Iraq
5  15  35.12     USA

dfObj['BigCountry'] = ''
dfObj['SmallCountry'] = ''

Исходя из области, я хочу классифицировать страну, большую или маленькую. Я пытался сгруппировать идентификатор, а затем на основе макс (площадь) в группе, я хочу установить маленькую / большую страну

Выходные данные должны быть

   id  BigCountry  SmallCountry   
0  11  Sweden         Norway
1  12  UK             UK           
2  13  Iraq           Iran
5  15  USA            USA 

1 Ответ

0 голосов
/ 20 октября 2019

Один из способов - использовать set_index, затем groupby и agg с idxmax и idxmin:

df.set_index('Country').groupby('id')['Area'].agg(['idxmax','idxmin'])\
  .rename(columns = {'idxmax':'BigCountry', 'idxmin':'SmallCountry'})

Выход:

   BigCountry SmallCountry
id                        
11     Sweden       Norway
12         UK           UK
13       Iraq         Iran
15        USA          USA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...