아래래의 남북한 발전 전력량 데이터에서 전력량 컬럼은 남한과 북한만, 연도 컬럼들은 1990부터 2016까지만 담은 데이터프레임을 만들고자 한다.
iloc를 사용 데이터프레임을 슬라이싱하고 인덱스 이름을 South와 North로 새로 지정했다.
df_ns = df.iloc[:6, 2:] 라는 코드로도 가능하지 않을까? 라는 생각에 코드를 작동시켰더니
ValueError: Length mismatch: Expected axis has 6 elements, new values have 2 elements
라는 오류가 발생했다.
예상 축에는 6개 요소가 있지만 새 값에는 2개 요소가 있다는 뜻으로, 불러온 인덱스의 수와 지정한 인덱스 이름의 수가 달라서 발생한 오류이다.
이 오류가 발생했다면 불러온 인덱스(혹은 컬럼)과 새로 지정할 인덱스(혹은 컬럼)의 이름 수를 일치시켜주면 해결된다.
그런데 남한과 북한 2개 요소만 가져오려고 작성한 코드가 왜 6개 요소를 반환했을까?
새로 작성한 df.iloc[:6, 2:]는 행은 0부터 6까지, 컬럼은 2부터 끝까지 가져온다.
기존 df.iloc[[0, 5], 2:]는 행은 0과 5를 하나씩, 컬럼은 2부터 끝까지 가져온다.
같은 값을 가져오는 코드라고 생각했으나 전혀 다른 내용의 코드였다.
만약 다른 코드로 같은 데이터를 반환하고 싶다면
라고 작성할 수 있다. loc는 iloc와 달리 인덱스나 컬럼의 값을 지정해 데이터를 슬라이싱한다.
기존 데이터프레임은 정수형 숫자 인덱스를 가지고 있으므로 행은 [0, 5]로 지정, 컬럼은 값 '1990':으로 지정했다.
loc는 작성한 시작값과 끝값을 그대로 불러오고, iloc는 끝값-1을 불러오는 것을 잊지 말자.
'데이터분석 공부 > DSBA 4기' 카테고리의 다른 글
03/15/2024 TIL (0) | 2024.03.15 |
---|---|
12/03/2024 TIL (1) | 2024.03.12 |
파이썬 데이터프레임 특정 문자 포함된 행 삭제하기 / str.replace() 추천하지 않는 경우 (0) | 2024.03.09 |
파이썬 데이터프레임 astype( ) 으로 데이터 자료형 변경하기 (0) | 2024.03.08 |
파이썬 str.replace( ) 메소드로 데이터프레임 속 문자 변경하기 (1) | 2024.03.07 |