2016-07-16 2 views
2

저는 pandas 계열을 사용하고 있는데, quantile을 나타내는 색인 값을 찾고자합니다.quantile 색인을 찾는 f}

내가있는 경우 :

np.random.seed(8) 
s = pd.Series(np.random.rand(6), ['a', 'b', 'c', 'd', 'e', 'f']) 
s 

a 0.873429 
b 0.968541 
c 0.869195 
d 0.530856 
e 0.232728 
f 0.011399 
dtype: float64 

을 그리고 난 내가 알고 점을 나타냅니다 s의 인덱스 값이 무엇인지되어 원하는 것은

0.70002511588475946 

을 얻을

s.quantile(.5) 

할 그 quantile 값 바로 전에. 이 경우 색인 값은 d이어야합니다.

답변

1

sort_values을 사용하여 순서를 반대로 계산 된 퀴 올리 크보다 작거나 같은 것을 모두 찾은 다음 idxmax을 찾으십시오.

(s.sort_values()[::-1] <= s.quantile(.5)).idxmax() 

또는 :

(s.sort_values(ascending=False) <= s.quantile(.5)).idxmax() 

우리는 그것을 기능화 할 수 있습니다

def idxquantile(s, q=0.5, *args, **kwargs): 
    qv = s.quantile(q, *args, **kwargs) 
    return (s.sort_values()[::-1] <= qv).idxmax() 

idxquantile(s) 
관련 문제