2016-07-18 53 views
4

考慮一系列低於s的數字位置:找到一個非數字索引值

s = pd.Series(np.arange(18, 0, -3), list('ABCDEF')) 
s 

A 18 
B 15 
C 12 
D  9 
E  6 
F  3 
dtype: int32 

我想要得到的'D'

數字位置這將做到這一點,但我覺得我們都可以同意這是毛:

s.reset_index().index.to_series()[s.reset_index().iloc[:, 0] == 'D'].iloc[0] 

回答

8

您可以使用Index.get_loc

print(s.index.get_loc('D')) 
3 
+1

看起來像內置這樣的任務,可愛! – Divakar

+2

注意:如果索引中有多個'D',則返回一個數組! – Alex

4

使用np.searchsorted -

np.searchsorted(s.index.values,'D') 

或者使用方法,就像這樣 -

s.index.searchsorted('D') 
+0

我愛你所提供的解決方案numpy的隨後找到了大熊貓的解決方案之後;-) 。你應該添加numpy標籤到我的文章。 – piRSquared

+1

@piRSquared這就是回答問題的美妙之處,特別是那些我並不熟悉的標籤! ;) – Divakar

3
m = s.index == 'D' 
idx = m.argmax() if m.any() else None