본문 바로가기
Python/Pandas

pandas TypeError: 'NoneType' object is not subscriptable 오류 해결하기

by PySun 2025. 5. 12.
반응형

소개

파이썬에서 pandas를 사용할 때 'TypeError: 'NoneType' object is not subscriptable' 오류는 많은 사용자들에게 좌절감을 줄 수 있습니다. 이 오류는 기본적으로 None 객체에 대한 인덱싱을 시도할 때 발생합니다. 이 블로그 글에서는 이러한 에러가 발생하는 원인과 그 해결 방법을 공유하겠습니다.

에러 발생 예시 코드

먼저, 'TypeError: 'NoneType' object is not subscriptable' 에러가 발생할 만한 간단한 예시 코드를 살펴보겠습니다.

import pandas as pd

# 데이터프레임을 생성하는 함수
def create_dataframe(data):
    if data is None:
        return None
    return pd.DataFrame(data)

# None 데이터를 전달
df = create_dataframe(None)

# 데이터프레임의 첫 번째 행에 접근
first_row = df.iloc[0]
print(first_row)

에러 해결 방법

1. 데이터프레임이 None인지 확인하기

가장 먼저, 데이터프레임이 None인지 확인하고 이를 처리하는 방법을 추가해야 합니다. 아래와 같은 코드를 사용하여 데이터프레임이 None인지 체크할 수 있습니다.

import pandas as pd

def create_dataframe(data):
    if data is None:
        return None
    return pd.DataFrame(data)

df = create_dataframe(None)

# df가 None인지 체크
if df is not None:
    first_row = df.iloc[0]
    print(first_row)
else:
    print("데이터프레임은 None입니다!")

2. 함수가 올바른 데이터를 반환하도록 수정하기

함수에서 None이 반환되지 않도록 하기 위해, 기본값을 설정하거나 데이터의 유효성을 검사하는 방법을 고려할 수 있습니다. 예를 들어, 데이터가 적어도 빈 리스트가 되도록 수정할 수 있습니다.

import pandas as pd

def create_dataframe(data):
    if data is None:
        return pd.DataFrame()  # 빈 데이터프레임 반환
    return pd.DataFrame(data)

df = create_dataframe(None)

# 이제 df는 빈 데이터프레임입니다.
if not df.empty:
    first_row = df.iloc[0]
    print(first_row)
else:
    print("데이터프레임은 비어 있습니다!")

마무리

이 블로그 글에서는 pandas에서 발생하는 'TypeError: 'NoneType' object is not subscriptable' 에러에 대한 몇 가지 해결 방법을 살펴보았습니다. 데이터프레임이 None인지 확인하거나 함수를 수정하여 항상 유효한 객체를 반환하는 것이 중요합니다. pandas를 사용할 때 이러한 작은 체크를 추가하면 많은 시간과 노력을 절약할 수 있습니다. 항상 코드를 클린하게 유지하고, 오류 발생 가능성을 최소화하는 습관을 기르세요!

반응형