Como corrigir: valueerror: não é possível definir uma linha com colunas incompatíveis


Um erro que você pode encontrar ao usar pandas é:

 ValueError : cannot set a row with mismatched columns

Este erro ocorre quando você tenta adicionar uma nova linha a um DataFrame do pandas, mas o número de valores na nova linha não corresponde ao número de colunas no DataFrame existente.

O exemplo a seguir mostra como corrigir esse erro na prática.

Como reproduzir o erro

Suponha que criemos o seguinte DataFrame do pandas:

 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

Agora suponha que tentamos adicionar uma nova linha no final do 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

Recebemos um ValueError porque a nova linha que estamos tentando adicionar possui apenas dois valores, mas o DataFrame existente possui quatro colunas.

Como corrigir o erro

A maneira mais fácil de corrigir esse erro é usar a função append() para adicionar a nova linha no final do DataFrame, que preencherá automaticamente os valores ausentes com NaN:

A sintaxe a seguir mostra como usar esta função na prática:

 #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

Observe que não estamos recebendo nenhum ValueError e a nova linha foi adicionada ao final do DataFrame.

Observe também que os dois valores ausentes na nova linha foram simplesmente preenchidos com valores NaN.

Recursos adicionais

Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:

Como corrigir: as colunas se sobrepõem, mas nenhum sufixo é especificado
Como corrigir: o objeto ‘numpy.ndarray’ não possui um atributo ‘append’
Como corrigir: se você usar todos os valores escalares, precisará passar um índice

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *