2016-11-20 8 views
5

私はパンダのfloat変数をランク付けしていると私は一意でないためにランクを強制したい強制増分は

これは何が起こるかである(ネクタイのイベントで重複ランク。):

vals = pd.Series([0.0133, 0.0018, np.nan, 0.0006, 0.0006]) 
vals.rank(ascending=False, method='dense') 

0 1.0 
1 2.0 
2 NaN 
3 3.0 
4 3.0 
私は結果ではなく

0 1.0 
1 2.0 
2 NaN 
3 3.0 
4 4.0 

ようにしたいと思い

私はrank方法でこれを行うことができますか私はいくつかの並べ替えやループのロジックを使って手動でこれを行うにはありますか?

答えて

6

あなたは(Series.rankドキュメントを参照してください)メソッドのfirstを使用することができます。

最初:この上アイハンの答えを明確にするために、アレイに彼らが表示されるために

ser = pd.Series([1, 2, np.nan, 3, 3, 4]) 

ser.rank(method='first') 
Out: 
0 1.0 
1 2.0 
2 NaN 
3 3.0 
4 4.0 
5 5.0 
dtype: float64 
+3

私は誰がこれを下げるのか分かりません。それは完璧な答えです。 – piRSquared

+2

@ piRSquared、全く同感。 – MaxU

+0

@piRSquared、ここと同じです。これは完璧に機能しました(常に明白です)。ありがとう! – Chris

1

を割り当てランクを(編集やコメントに十分な評判がないので)

​​DFはあなたが望むようにソートされます。

df.sort_values()を使用してデータフレームを並べ替える必要がある場合は、​​でランク付けすることができます。