소개
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를 다룰 때는 이러한 에러를 예방하고 해결하는 법을 아는 것이 큰 도움이 됩니다. 행복한 코딩 되세요!
'Python > Pandas' 카테고리의 다른 글
pandas.unstack으로 데이터프레임 원래 형태로 되돌리기 (0) | 2025.06.03 |
---|---|
pandas AttributeError: 'DataFrame' object has no attribute 'xxx' 오류 해결하기 (0) | 2025.06.02 |
pandas.unique로 고유 값 추출하기 (0) | 2025.06.02 |
pandas.to_excel로 데이터프레임을 엑셀로 저장하기 (0) | 2025.06.02 |
Pandas ValueError: Length of passed values is 0, index implies 1 오류 해결하기 (0) | 2025.06.01 |