Como corrigir: valueerror: todas as matrizes devem ter o mesmo comprimento
Um erro que você pode encontrar ao usar pandas é:
ValueError : All arrays must be of the same length
Este erro ocorre quando você tenta criar um DataFrame do pandas e nem todas as colunas no DataFrame têm o mesmo comprimento.
O exemplo a seguir mostra como corrigir esse erro na prática.
Como reproduzir o erro
Digamos que tentamos criar o seguinte DataFrame do pandas:
import pandas as pd #define arrays to use as columns in DataFrame team = ['A', 'A', 'A', 'A', 'B', 'B', 'B'] position = ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'] points = [5, 7, 7, 9, 12, 9, 9, 4] #attempt to create DataFrame from arrays df = pd. DataFrame ({' team ': team, ' position ': position, ' dots ': dots}) ValueError : All arrays must be of the same length
Recebemos um erro que nos informa que cada array não tem o mesmo comprimento.
Podemos verificar isso imprimindo o comprimento de cada array:
#print length of each array
print ( len (team), len (position), len (points))
7 8 8
Vemos que a tabela ‘equipe’ possui apenas 7 elementos, enquanto as tabelas ‘posição’ e ‘pontos’ possuem 8 elementos cada.
Como corrigir o erro
A maneira mais fácil de resolver esse erro é simplesmente garantir que cada array que usamos tenha o mesmo comprimento:
import pandas as pd #define arrays to use as columns in DataFrame team = ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'] position = ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'] points = [5, 7, 7, 9, 12, 9, 9, 4] #create DataFrame from arrays df = pd. DataFrame ({' team ': team, ' position ': position, ' dots ': dots}) #view DataFrame df team position points 0 A G 5 1 A G 7 2 A F 7 3 A F 9 4 B G 12 5 B G 9 6 B F 9 7 B F 4
Observe que cada array desta vez tem o mesmo comprimento.
Portanto, quando usamos os arrays para criar o DataFrame do pandas, não recebemos um erro porque cada coluna tem o mesmo comprimento.
Recursos adicionais
Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:
Como corrigir KeyError em Pandas
Como corrigir: ValueError: não é possível converter float NaN em int
Como corrigir: ValueError: os operandos não puderam ser transmitidos com formas