2014-09-18 4 views
0

나는 MultiIndex가있는 pandas Series를 가지고 있으며, MultiIndex의 한 레벨에 속하는 정수 행 번호를 얻고 싶습니다. 예를 들어MultiIndex 시리즈의 정수 행 인덱스 가져 오기

, 내가 가지고있는 경우 샘플 데이터를 다음과 같습니다

s = pandas.Series([10, 23, 2, 19], 
        index=pandas.MultiIndex.from_product([['a', 'b'], ['c', 'd']])) 

s는 :

a c 10 
    d 23 
b c 2 
    d 19 

나는 수준 b에 해당하는 행 번호를 얻으려면. 그래서 여기에, 마지막 두 행은 b 아래에 있기 때문에 출력으로 [2, 3]을 얻을 것입니다. 또한 실제로는 b 아래 첫 번째 행만 필요합니다.

시리즈를 비교할 수 있도록 숫자를 얻고 싶었습니다. b 레벨의 5 개의 Series 오브젝트가 있다고 가정 해보십시오. 이것들은 시계열 데이터이며, b은 관측 중에 존재하는 조건 (그리고 c은 하위 조건 등)에 해당합니다. 나는 어떤 시리즈가 동시에 조건을 가지고 있었는지 알고 싶다.

편집 : 명확히하기 위해 인덱스 자체의 값을 비교할 필요가 없습니다.

d = data.frame(col_1 = c('a','a','b','b'), col_2 = c('c','d','c','d'), col_3 = runif(4)) 

그런 다음 명령 which(d$col_1 == 'b') 내가 원하는 결과를 얻을 것이다 : 예를 들어, R에서 나는이 dataframe이 있다면. 당신이에 의해 인덱싱 할 인덱스가 첫 번째 행을 얻으려면 loc

df.loc['b'] 

를 사용할 수있는 가장 바깥 쪽 하나 인 경우

답변

0

은 내가 head 방법을 가장 쉬운

df.loc['b'].head(1) 

숙어 방법을 찾아 귀하의 질문의 두 번째 부분은 다음과 같습니다. 시리즈의 이름이 series1, series2 및 series3이라고 가정 해 보겠습니다.

big_series = pd.concat([series1, series2, series3]) 
big_series.loc['b'] 
+0

감사합니다. 실제로 원래 시리즈의 정수 인덱스 번호가 필요합니다. 그래서's.loc [ 'b'] .head (1)'은 내용을 반환 할 것이지만's'의 내용을 반환 할 필요가 있습니다. – user2034412

+0

각 시리즈의 locatoins를 비교하는 경우 모든 시리즈를 목록에 배치 한 다음 연결해야합니다. 'loc'를 사용하여 한 번에 모든 값을 얻을 수 있습니다. – b10n

관련 문제