본문 바로가기
Python/Pandas

Pandas ValueError: shape mismatch 오류 해결하기

by PySun 2025. 6. 2.
반응형

소개

Pandas를 사용할 때, 'ValueError: Shape mismatch' 오류는 매우 일반적으로 발생하는 문제입니다. 이 오류는 DataFrame의 크기(행과 열의 수)가 일치하지 않을 때 발생하게 되며, 예를 들어 데이터를 추가할 때 인덱스 수가 맞지 않거나, 열의 수가 불일치할 때 나타납니다. 이 글에서는 이 오류의 발생 원인과 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 'ValueError: Shape mismatch' 에러가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.

import pandas as pd

# 데이터프레임 생성
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

# 새로운 열 추가 시, 길이가 맞지 않아 에러 발생
df['C'] = [7, 8]  # 이 줄에서 ValueError가 발생합니다.

에러 해결 방법

1. 열 데이터의 길이를 맞추기

가장 간단한 해결책은 추가하고자 하는 열의 리스트 길이를 기존 DataFrame의 행 수와 동일하게 맞추는 것입니다. 아래처럼 데이터 길이를 동일하게 만들어 주세요.

import pandas as pd

# 데이터프레임 생성
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

# 새 열 추가 시, 데이터 길이를 맞춥니다
df['C'] = [7, 8, 9]  # 이제 오류가 발생하지 않습니다.
print(df)

2. NaN 값 사용하기

만약 길이가 다르지만 추가하고 싶은 경우, NaN 값을 사용하여 데이터 길이를 맞출 수도 있습니다. 아래 예시를 참고하세요.

import pandas as pd
import numpy as np

# 데이터프레임 생성
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

# NaN으로 채운 열 추가
df['C'] = [7, 8, np.nan]  # NaN 값을 사용하여 길이를 맞췄습니다.
print(df)

3. DataFrame의 재구성 고려하기

데이터 프레임을 재구성하거나 필요한 경우 merge 혹은 concat과 같은 메소드를 사용할 수도 있습니다. 이 방법은 여러 DataFrame을 결합할 때 유용하게 쓰입니다.

import pandas as pd

# 두 개의 데이터프레임 생성
df1 = pd.DataFrame({'A': [1, 2, 3]})
df2 = pd.DataFrame({'B': [4, 5, 6, 7]})

# 병합 시 인덱스를 맞추면 오류 발생 방지
result = pd.concat([df1, df2.reset_index(drop=True)], axis=1)
print(result)

마무리

이번 블로그 글에서는 Pandas에서 발생하는 'ValueError: Shape mismatch' 오류의 원인과 이를 해결하기 위한 방법들을 살펴보았습니다. 새로운 열을 추가할 때는 데이터의 길이를 맞추거나 NaN을 활용하는 방법을 사용할 수 있으며, DataFrame의 재구성을 통해 다양한 방식으로 문제를 해결할 수 있습니다. Pandas를 다룰 때는 이러한 에러를 예방하고 해결하는 법을 아는 것이 큰 도움이 됩니다. 행복한 코딩 되세요!

반응형