我有一个多索引数据框,我需要获得最高和最低分数作为数据框
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
答案 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.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