가끔 데이터프레임 내에서 특정 값이 존재하는 행의 인덱스 번호를 얻어와야 할 때가 있다. 왜냐하면 데이터프레임의 특정 값에 접근하기 위해서는 인덱스 번호가 무엇보다도 가장 기본적으로 사용되는 방법이기도 하며, 무엇보다도 가장 간단한 접근 방법이기 때문이다. 예를 들어, 아래와 같은 데이터프레임이 있다고 가정해보자.
code
open
high
low
close
pre_close
vix
000100
1000
1300
000300
1300
1350
우리가 이 때 종목코드가 000100인 데이터가 데이터프레임의 몇 번째 행에 입력되어 있는지를 알아야 000100 종목코드가 입력되어 있는 행의 다른 데이터(시가, 고가, 저가 등)에도 접근할 수 있다.
특정 칼럼의 특정 값이 위치한 인덱스 번호 얻어오기
이해를 돕기 위해, 위의 데이터프레임 값은 `dataframe` 변수에 입력되어 있다고 가정하자. 일단 `dataframe` 내에 있는 특정 칼럼에 접근하는 방법은 `dataframe.칼럼명`이다. 이와 마찬가지로, 우리는 `index`에 접근하기 위해서는 `dataframe.index` 와 같은 형태로 제작할 수 있다. 더 나아가서, 우리는 `index` 뒤에 []를 이용해 인덱싱도 이용할 수 있다.
예를 들어, `dataframe` 안에 있는 칼럼 중 칼럼의 이름이 `code`인 열에서, 그 값이 "000100"인 경우의 인덱스 값을 얻어오기 위해서는 아래와 같이 제작하면 된다. 그리고 이 때 얻어온 값을 `index_number`라는 이름을 가진 변수에 입력했다.(지금 시점에서의 `index_number` 변수안에는 0이 입력되어 있을 것이다.)
## 인덱스 번호 획득하기
index_number = dataframe.index[(dataframe['code'] == '000100')]
이제 이 index_number라는 변수를 통해 우리는 특정 행의 데이터를 얻어올 수 있다.
print(dataframe.iloc[index_numer])
## 출력 결과 ##
code : 000100
open : 1000
high : 1300
low :
close :
pre_close :
vix :
728x90
결과값이 그렇게 나오면 데이터를 어떻게 써?
데이터프레임 내에서는 해당 데이터를 리스트 자료형으로 만들어주는 to_list() 메서드를 이용해서 데이터를 보다 편리하게 접근할 수 있다.
print(dataframe.iloc[index_numer].to_list())
## 출력 결과 ##
['000100', '1000', '1300', '', '', '', '']
이제 to_list()를 통해 리스트로 만든 데이터(리스트 형태의 자료형)에 또 다시 인덱싱을 통해 데이터에 접근할 수 있다.
data = dataframe.iloc[index_numer].to_list()
data[0]
## 출력 결과 ##
000100