Como corrigir: o comprimento dos valores não corresponde ao comprimento do índice


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

 ValueError: Length of values does not match length of index

Este erro ocorre quando você tenta atribuir uma matriz de valores NumPy a uma nova coluna em um DataFrame do pandas, mas o comprimento da matriz não corresponde ao comprimento atual do índice.

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

Como reproduzir o erro

Suponha que temos o seguinte DataFrame do pandas:

 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

Agora digamos que tentamos adicionar uma nova coluna chamada “bounces” como um array NumPy:

 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)

Recebemos um ValueError porque estamos tentando adicionar um array NumPy de comprimento 3 a um DataFrame que possui um índice de comprimento 4 .

Como corrigir o erro

A maneira mais fácil de corrigir esse erro é simplesmente criar uma nova coluna usando uma série pandas em vez de um array NumPy.

Por padrão, se o comprimento da série pandas não corresponder ao comprimento do índice DataFrame, os valores NaN serão inseridos:

 #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

Usando uma série pandas, podemos adicionar com sucesso a coluna “rejeições” e os valores ausentes são simplesmente preenchidos com NaN.

Observe que podemos converter rapidamente valores NaN para outro valor (como zero) usando o método fillna() da seguinte forma:

 #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

Observe que o valor NaN foi convertido para zero.

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

Add a Comment

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