多索引熊猫数据框的最高和最低列值

时间:2018-10-08 10:42:19

标签: python pandas

我有一个多索引数据框,我需要获得最高和最低分数作为数据框

               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 :(得分:1)

使用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.idxmaxSeries.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