2017-08-25 11 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] 

しかし、このアプローチでは、データフレームの作成時に名前が表示されているように見えるので、私はKevinの代わりにJackを取得します。私が紛失しているのは何ですか?あなたがdf.name[0]にアクセスするとき、それは(df.indexを呼び出すことによりチェックアウト)行のインデックスを指しているためである

答えて

3

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' 
この.usingをお試しください
関連する問題