大熊猫排序没有给出预期的结果

时间:2017-08-25 21:43:44

标签: python pandas sorting

基本的基本问题,但不能正确。我试图按分数排序,然后获得与最高分相关的顶级名称。

import pandas as pd
df = pd.DataFrame({'score' :[1,5,7,999], 'name':['jack','jill','chris','kevin']})
df.sort_values(by= 'score', ascending=False, inplace=True)
df
df.name[0]

然而,通过这种方法,我得到杰克而不是凯文,因为它似乎按照名称在数据框创建中出现的顺序进行。我错过的显而易见的事情是什么?

3 个答案:

答案 0 :(得分:3)

这是因为当您访问df.name[0]时,它指向行的索引(通过调用df.index签出)。名称为jack的行的索引值为0,因为当您创建df时,第一个实例为jack

要访问已排序的df的第一行,请使用.iloc进行位置索引(如果需要基于标签的索引,请使用.loc。)

import pandas as pd
df = pd.DataFrame({'score' :[1,5,7,999], 'name':['jack','jill','chris','kevin']})
df.sort_values(by= 'score', ascending=False, inplace=True)
df
df.name.iloc[0]

返回kevin

答案 1 :(得分:0)

索引可以由reset_index重组。

在你的情况下,在sort_values重组索引之后执行下面。

df.reset_index(drop=True, inplace=True)

答案 2 :(得分:0)

试试这个。idxmax

df.loc[df.score.idxmax(),'name']

Out[5631]: 'kevin'