2017-08-25 20 views
0

基本的基本問題,但不能得到正確的。我試圖按分數排序,然後獲得與最高分相關的頂級名稱。排序熊貓不給予預期效果

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

這是因爲當您訪問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

0

索引可以通過reset_index進行重組。

對於你的情況,在sort_values重新構造索引後執行如下。

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

試試這個。採用idxmax

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

Out[5631]: 'kevin'