해결 방법: 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’ 속성이 없습니다.
해결 방법: 모든 스칼라 값을 사용하는 경우 인덱스를 전달해야 합니다.

의견을 추가하다

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