해결 방법: valueerror: 일치하지 않는 열이 있는 행을 정의할 수 없습니다.
pandas를 사용할 때 발생할 수 있는 오류는 다음과 같습니다.
ValueError : cannot set a row with mismatched columns
이 오류는 pandas DataFrame에 새 행을 추가하려고 시도했지만 새 행의 값 수가 기존 DataFrame의 열 수와 일치하지 않을 때 발생합니다.
다음 예에서는 실제로 이 오류를 수정하는 방법을 보여줍니다.
오류를 재현하는 방법
다음과 같은 pandas DataFrame을 생성한다고 가정합니다.
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'], ' points ': [18, 22, 19, 14, 14, 11, 20, 28, 22], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4, 8], ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12, 9]}) #view DataFrame df team points assists rebounds 0 A 18 5 11 1 B 22 7 8 2 C 19 7 10 3 D 14 9 6 4 E 14 12 6 5 F 11 9 5 6 G 20 9 9 7:28 4 12 8 I 22 8 9
이제 DataFrame 끝에 새 행을 추가하려고 한다고 가정해 보겠습니다.
#define new row to append
new_team = ['I', 30]
#append row to DataFrame
df. loc [ len (df)] = new_team
#view updated DataFrame
df
ValueError : cannot set a row with mismatched columns
추가하려는 새 행에는 두 개의 값만 있지만 기존 DataFrame에는 네 개의 열이 있기 때문에 ValueError 가 발생합니다.
오류를 수정하는 방법
이 오류를 해결하는 가장 쉬운 방법은 Append() 함수를 사용하여 DataFrame 끝에 줄바꿈을 추가하는 것입니다. 그러면 누락된 값이 NaN으로 자동 채워집니다.
다음 구문은 실제로 이 함수를 사용하는 방법을 보여줍니다.
#define new row to append new = ['J', 30] #append row to end of DataFrame df = df. append ( pd.Series (new,index= df.columns [: len (new)]), ignore_index= True ) #view updated DataFrame df team points assists rebounds 0 to 18 5.0 11.0 1 B 22 7.0 8.0 2 C 19 7.0 10.0 3 D 14 9.0 6.0 4 E 14 12.0 6.0 5 F 11 9.0 5.0 6 G 20 9.0 9.0 7:28 a.m. 4.0 12.0 8 I 22 8.0 9.0 9 D 30 NaN NaN
ValueError는 수신되지 않으며 DataFrame 끝에 줄바꿈이 추가되었습니다.
또한 새 행의 누락된 값 2개는 단순히 NaN 값으로 채워졌습니다.
추가 리소스
다음 튜토리얼에서는 Python의 다른 일반적인 오류를 수정하는 방법을 설명합니다.
수정방법: 열이 겹치는데 접미사가 지정되지 않음
수정 방법: ‘numpy.ndarray’ 개체에 ‘append’ 속성이 없습니다.
해결 방법: 모든 스칼라 값을 사용하는 경우 인덱스를 전달해야 합니다.