수정 방법: 값의 길이가 인덱스 길이와 일치하지 않습니다.


pandas를 사용할 때 발생할 수 있는 오류는 다음과 같습니다.

 ValueError: Length of values does not match length of index

이 오류는 Pandas DataFrame의 새 열에 NumPy 값 배열을 할당하려고 시도했지만 배열 길이가 인덱스의 현재 길이와 일치하지 않을 때 발생합니다.

다음 예에서는 실제로 이 오류를 수정하는 방법을 보여줍니다.

오류를 재현하는 방법

다음과 같은 팬더 DataFrame이 있다고 가정합니다.

 import pandas as pd

#define DataFrame
df = pd. DataFrame ({' points ': [25, 12, 15, 14],
                   ' assists ': [5, 7, 13, 12]})

#view DataFrame
print (df)

   assist points
0 25 5
1 12 7
2 15 13
3 14 12

이제 NumPy 배열로 “bounces”라는 새 열을 추가하려고 한다고 가정해 보겠습니다.

 import numpy as np

#attempt to add 'rebounds' column
df[' rebounds '] = np. array ([3, 3, 7])

ValueError : Length of values (3) does not match length of index (4)

길이가 4 인 인덱스를 가진 DataFrame에 길이가 3 인 NumPy 배열을 추가하려고 하기 때문에 ValueError 가 발생합니다.

오류를 수정하는 방법

이 오류를 해결하는 가장 쉬운 방법은 NumPy 배열 대신 pandas 시리즈를 사용하여 새 열을 만드는 것입니다.

기본적으로 팬더 시리즈의 길이가 DataFrame 인덱스의 길이와 일치하지 않으면 NaN 값이 입력됩니다.

 #create 'rebounds' column
df[' rebounds '] = pd. Series ([3, 3, 7])

#view updated DataFrame
df

	points assists rebounds
0 25 5 3.0
1 12 7 3.0
2 15 13 7.0
3 14 12 NaN

Pandas 시리즈를 사용하면 “bounces” 열을 성공적으로 추가할 수 있으며 누락된 값은 간단히 NaN으로 채워집니다.

다음과 같이 fillna() 메서드를 사용하여 NaN 값을 다른 값(예: 0)으로 빠르게 변환할 수 있습니다.

 #fill in NaN values with zero
df = df. fillna (0)

#view updated DataFrame
df

points assists rebounds
0 25 5 3.0
1 12 7 3.0
2 15 13 7.0
3 14 12 0.0

NaN 값이 0으로 변환되었습니다.

추가 리소스

다음 튜토리얼에서는 Python의 다른 일반적인 오류를 수정하는 방법을 설명합니다.

Pandas에서 KeyError를 수정하는 방법
수정 방법: ValueError: float NaN을 int로 변환할 수 없습니다.
해결 방법: ValueError: 피연산자를 모양과 함께 브로드캐스트할 수 없습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다