Самые высокие и самые низкие значения столбца в мультииндексном панде - PullRequest
0 голосов
/ 08 октября 2018

У меня есть мультииндексный фрейм данных, мне нужно получить максимальный и минимальный баллы как фрейм данных

               score
date     asset       
01-01-16 XO         8
         VXO        3
         NP         4
         GE         2
         LE         1

import pandas as pd
pdf =pd.DataFrame({'date':['01-01-16','01-01-16','01-01-16','01-01-16','01-01-16'],'asset':["XO","VXO","NP","GE","LE"],'score':[8,3,4,2,1]})
    cdf = pdf.set_index(['date', 'asset'])
    cdf

Я пробовал cdf [(cdf.score <2) & (cdf.score> 4)], которыйне возвращает значений.

Ожидаемый результат:

              score
date     asset       
01-01-16 XO         8
         LE         1

1 Ответ

0 голосов
/ 08 октября 2018

Используйте DataFrame.iloc для выбора по позициям - первый и последний ряд:

cdf = cdf.sort_values('score', ascending=False).iloc[[0, -1]]  
print (cdf)
                score
date     asset       
01-01-16 XO         8
         LE         1

РЕДАКТ. - Вы также можете выбрать значения индекса с помощью Series.idxmaxи Series.idxmin:

cdf = cdf.loc[[cdf.score.idxmax(), cdf.score.idxmin()]]  
print (cdf)
                score
date     asset       
01-01-16 XO         8
         LE         1

Если возможно, несколько максимальных и минимальных значений:

cdf = cdf[(cdf.score == cdf.score.max()) | (cdf.score == cdf.score.min()) ] 
print (cdf)
                score
date     asset       
01-01-16 XO         8
         LE         1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...