Cómo solucionarlo: la longitud de los valores no coincide con la longitud del índice

En este artículo corregiremos el error: La longitud de los valores no coincide con la longitud del índice en Python.

Python3

# importing pandas
import pandas as pd
  
sepal_length = [5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 
                4.6, 5.0, 4.4, 4.9]
sepal_width = [4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 
               4.9, 5.1, 5.2, 5.3]
petal_length = [3.3, 4.6, 4.7, 5.6, 6.7, 5.0, 4.8]
petal_width = [3.6, 5.6, 5.4, 4.6, 4.4, 5.0, 4.9]
  
# DataFrame with 2 columns
df = pd.DataFrame({'sepal_length(cm)': sepal_length,
                   'sepal_width(cm)': sepal_width})
  
df['petal_length(cm)'] = petal_length
df['petal_width(cm)'] = petal_width
  
print(df)

Producción:

ValueError: Length of values (7) does not match length of index (10)

Motivo del error:

La longitud del índice del DataFrame de pandas (es decir, la longitud de la columna del DataFrame actual), que es 10 en este caso, no es igual a la longitud de la nueva lista o array NumPy, que es 7 en este caso.

pd.Index.size!=len(petal_width)

Arreglando el error:

Este error se puede solucionar preprocesando la nueva lista o array NumPy que será una columna de DataFrame mediante el uso de la función pandas Series() que en realidad convierte la lista o array NumPy al tamaño de la longitud de columna de DataFrame agregando NaN si la lista o la array NumPy tienen una longitud menor; de lo contrario, si la lista o NumPy tienen una longitud mayor, entonces toma la lista o la array NumPy con la longitud de las columnas del marco de datos de pandas.

Sintaxis para lista:

Considere list1 como una lista de python

df['new_column'] = pd.Series(list1)

Sintaxis para la array NumPy:

Considere numarr como una array numpy

df['new_column'] = pd.Series(numarr)

Python3

# importing pandas
import pandas as pd
  
# importing numpy
import numpy as np
sepal_length = [5.1, 4.9, 4.7, 4.6, 5.0, 5.4,
                4.6, 5.0, 4.4, 4.9]
sepal_width = [4.6, 5.0, 5.4, 4.6, 5.0, 4.4,
               4.9, 5.1, 5.2, 5.3]
petal_length = [3.3, 4.6, 4.7, 5.6, 6.7, 5.0, 4.8]
  
# numpy array of length 7
petal_width = np.array([3.6, 5.6, 5.4, 4.6, 4.4, 
                        5.0, 4.9])
  
# DataFrame with 2 columns of length 10
df = pd.DataFrame({'sepal_length(cm)': sepal_length,
                   'sepal_width(cm)': sepal_width})
  
# Adding list to pandas DataFrame
df['petal_length(cm)'] = pd.Series(petal_length)
  
# Adding numpy array to pandas DataFrame
df['petal_width(cm)'] = pd.Series(petal_width)
  
print(df)

Producción:

Publicación traducida automáticamente

Artículo escrito por lokeshpotta20 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *