본문 바로가기
Python/Pandas

pandas dataframe IndexError 오류 해결하기

by PySun 2023. 10. 10.
반응형

판다스(Pandas) DataFrame을 사용할 때 "IndexError" 에러가 발생하는 상황과 이를 해결하기 위한 여러 가지 방법에 대해 설명하겠습니다. "IndexError"는 리스트 또는 시리즈의 인덱스 범위를 벗어났을 때 발생하는 오류입니다.

상황 1: 존재하지 않는 열에 접근

import pandas as pd

data = {'이름': ['Alice', 'Bob', 'Charlie'],
        '나이': [30, 25, 35]}

df = pd.DataFrame(data)

# 존재하지 않는 열에 접근하여 IndexError 발생
value = df['키']

이 경우, '키'라는 열은 데이터프레임에 존재하지 않기 때문에 IndexError가 발생합니다.

해결 방법 1: 열 이름 확인

열에 접근하기 전에 열 이름을 확인하고 올바른 열을 사용하세요.

import pandas as pd

data = {'이름': ['Alice', 'Bob', 'Charlie'],
        '나이': [30, 25, 35]}

df = pd.DataFrame(data)

# 열 이름을 확인한 후 접근
if '키' in df.columns:
    value = df['키']
else:
    print("키 열이 존재하지 않습니다.")

상황 2: 존재하지 않는 행에 접근

import pandas as pd

data = {'이름': ['Alice', 'Bob', 'Charlie'],
        '나이': [30, 25, 35]}

df = pd.DataFrame(data)

# 존재하지 않는 행에 접근하여 IndexError 발생
row = df.iloc[3]

이 경우, 데이터프레임에는 3번째 행이 없기 때문에 IndexError가 발생합니다.

해결 방법 2: 행 번호 확인

행에 접근하기 전에 행 번호를 확인하고 존재하는 범위 내에서만 접근하세요.

import pandas as pd

data = {'이름': ['Alice', 'Bob', 'Charlie'],
        '나이': [30, 25, 35]}

df = pd.DataFrame(data)

# 행 번호를 확인한 후 접근
row_index = 3
if row_index < len(df):
    row = df.iloc[row_index]
else:
    print("행 번호가 범위를 벗어납니다.")

상황 3: 슬라이싱 범위를 벗어나는 경우

import pandas as pd

data = {'이름': ['Alice', 'Bob', 'Charlie'],
        '나이': [30, 25, 35]}

df = pd.DataFrame(data)

# 슬라이싱 범위를 벗어나서 IndexError 발생
subset = df.iloc[1:4]

이 경우, 슬라이싱 범위를 벗어나서 IndexError가 발생합니다.

해결 방법 3: 슬라이싱 범위 조절

슬라이싱 범위를 조절하여 존재하는 범위 내에서 슬라이싱하세요.

import pandas as pd

data = {'이름': ['Alice', 'Bob', 'Charlie'],
        '나이': [30, 25, 35]}

df = pd.DataFrame(data)

# 슬라이싱 범위를 조절하여 올바른 범위 내에서 슬라이싱
subset = df.iloc[1:3]

IndexError는 주로 데이터프레임의 열 또는 행에 접근할 때 인덱스 범위를 벗어났을 때 발생하는 오류입니다. 이를 해결하기 위해서는 인덱스나 범위를 확인하고, 존재하지 않는 열 또는 행에 접근하지 않도록 주의해야 합니다.

반응형