수정 방법: 값의 길이가 인덱스 길이와 일치하지 않습니다.
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: 피연산자를 모양과 함께 브로드캐스트할 수 없습니다.