2012-07-23 7 views
9

indexpandas.DataFrame 정수 인덱스로 우아한 방법을 찾을 수 없습니다. 다음 예제에서는 'A' 열의 첫 번째 요소에서 'a'값을 가져 오려고합니다.정수로 팬더 데이터 프레임을 인덱싱

import pandas 
df = pandas.DataFrame(
    {'A':['a','b', 'c'], 'B':['f', 'g', 'h']}, 
    index=[10,20,30] 
    ) 

나는 'a'을 반환 df['A'].ix[0]df['A'][10] 모두 기대. df['A'][10]'a'을 반환하지만 df['A'].ix[0]KeyError: 0을 던집니다. 인덱스 0을 기준으로 'a' 값을 얻으려는 유일한 방법은 다음 방법을 사용하는 것입니다.

df['A'][df['A'].index[0]] 

dataframe에서 'a'을 얻을 수있는 짧은 방법은 0 인덱스를 사용 있나요? 팬더 0.11로

업데이트

a는 index by integer 또 다른 방법이있다. 이 supersedesirow 접근

df.iloc[0] # integer based, gives the first row 
df.loc[10] # label based, gives the row with label 10 

.

당신의 색인은 0에서 시작하지 않기 때문에 당신은 df['A'].ix[0]에 오류가

답변

12

, 그것은 당신이 올바른하여 다음

df['A'].ix[10] 
df['A'].irow(0) 

최초의 용도 중 하나를 사용하여 원하는 값을 얻을 수 있습니다 (10)에서 시작 색인. 두 번째 명령은 원하는 값으로 의심되는 값이며 인덱스 값이 아닌 행 번호로 값을 찾고 기술적으로는 df['A'].ix[0]보다 2 문자 길다.

df2=df.reset_index() 

이 열으로 이동하여 이전 인덱스 (10, 20, 등)을 유지한다 : 그들은 당신이 df['A'].ix[0]에 대한 예상 한대로 응답 할 수 있도록

또는, 인덱스를 재설정 할 수 있습니다 df2 데이터 프레임에서 "인덱스"라고 불립니다. 그러면 df2['A'].ix[0]은 'a'를 반환합니다. 이전의 10 기반 인덱스를 제거하려면 reset_index 함수의 괄호에 drop=True 플래그를 삽입 할 수 있습니다.

+0

'df [ 'A']'는'irow'가 없기 때문에'df [ 'A'] .iget (0)'라고 생각합니다. – Eike

+3

irow()는 더 이상 사용되지 않습니다. 위치 기반 색인화에는 iloc []을 사용하십시오. – herrlich10

0

최신 팬더 버전에서는 u도 df [ "A"]. iat (0)를 사용할 수 있습니다.

관련 문제