2016-11-20 45 views
5

我的排名在大熊貓浮點型變量,我想迫使行列,是唯一力增量

這是發生了什麼(在領帶的情況下,沒有重複的行列。):

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

可以使用first的方法(見Series.rank文檔):

第一:爲了分配的行列,他們在數組中出現

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

要澄清一下艾漢的回答(因爲我沒有足夠的聲望來編輯或評論!)

​​只會去工作if DF按照你想要的方式排序。

因此,您需要先使用df.sort_values()對數據幀進行排序,然後您可以使用​​對其進行排名。