Извлечение главы группы на основе MultiIndex в панде DataFrame - PullRequest
3 голосов
/ 17 октября 2019

Я нашел этот вопрос , который демонстрирует, как сортировать DataFrame на основе первого уровня MultiIndex. Таким образом, исходный DataFrame, который выглядит как

l = [[1,'A',99],[1,'B',102],[1,'C',105],[1,'D',97],[2,'A',19],[2,'B',14],[2,'C',10],[2,'D',17]]
df = pd.DataFrame(l,columns = ['idx1','idx2','col1'])
df.set_index(['idx1','idx2'],inplace=True)

# assume data has been received like this...
print df

           col1
idx1 idx2      
1    A       99
     B      102
     C      105
     D       97
2    A       19
     B       14
     C       10
     D       17

, может быть отсортирован внутри каждой группы level=1 для получения:

           col1
idx1 idx2      
1    C      105
     B      102
     A       99
     D       97

2    A       19
     D       17
     B       14
     C       10

Мой вопрос: как мне извлечь первыйn элементов каждой группы на основе первого уровня?

Например, если n=2, то результат будет:

           col1
idx1 idx2      
1    C      105
     B      102

2    A       19
     D       17

Заранее благодарим за вашерассмотрение и ответ.

1 Ответ

4 голосов
/ 17 октября 2019

Вам просто нужно head на groupby отсортированного кадра данных:

df.sort_values('col1', ascending=False).groupby('idx1').head(2)

Вывод:

           col1
idx1 idx2      
1    C      105
     B      102
2    A       19
     D       17
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...