2015-10-16 3 views
1

У меня есть кадр данных pandas с идентификатором столбца «id» и значением столбца. Он уже отсортирован по первому id (по возрастанию), а затем по значению (по убыванию). То, что мне нужно, это 10 лучших значений для каждого идентификатора.Pandas: получить 10 лучших значений ПОСЛЕ группировки

Я предположил, что-то вроде следующего будет работать, но это не делает:

df.groupby("id", as_index=False).aggregate(lambda (index,rows) : rows.iloc[:10]) 

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

Любые идеи, как это можно сделать, без повторения каждой отдельной строки и добавления первой десяти к другой структуре данных?

+0

Вы должны привести пример dataframe в вопросе. –

ответ

2

Это вы что искали?

df.groupby('id').head(10) 
+0

Это именно то, что я хотел, спасибо. – SGer

Смежные вопросы