Получите ряды, соответствующие минимуму, с помощью групп панд - PullRequest
0 голосов
/ 12 января 2019

Мне нужно сгруппировать таблицу по условию:

R_num ORG name level
13    Dm   Ad   17
13    Dm   Af   16

Когда я использую, он дает мне 13 Dm Ad 16, что похоже на данные, которыми манипулируют.

df1=df.reset_index().groupby(['R_num','ORG']).agg({'name':'first','level':['min']})

Я хочу получить результат 13 Dm Af 16, я знаю, что-то не так с 'name':'first', но как мне это исправить, пожалуйста?

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Использование drop_duplicates после sort_values

newdf = df.sort_values('level').drop_duplicates(['R_num','ORG'])
newdf
   R_num ORG name  level
1     13  Dm   Af     16
0 голосов
/ 12 января 2019

IIUC, вы должны использовать groupby и idxmin:

# df.loc[df.groupby(['R_num','ORG'])['level'].agg('idxmin')]
df.loc[df.groupby(['R_num','ORG'])['level'].idxmin()]

   R_num ORG name  level
1     13  Dm   Af     16
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...