Как исправить: длина значений не соответствует длине индекса


Ошибка, с которой вы можете столкнуться при использовании панд:

 ValueError: Length of values does not match length of index

Эта ошибка возникает, когда вы пытаетесь присвоить массив значений NumPy новому столбцу в DataFrame pandas, но длина массива не соответствует текущей длине индекса.

В следующем примере показано, как исправить эту ошибку на практике.

Как воспроизвести ошибку

Предположим, у нас есть следующий DataFrame 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

Теперь предположим, что мы пытаемся добавить новый столбец с именем «bounces» в виде массива 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)

Мы получаем ValueError , потому что пытаемся добавить массив NumPy длиной 3 в DataFrame с индексом длины 4 .

Как исправить ошибку

Самый простой способ исправить эту ошибку — просто создать новый столбец, используя серию pandas, а не массив NumPy.

По умолчанию, если длина серии pandas не соответствует длине индекса DataFrame, то будут введены значения NaN:

 #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

Используя серию pandas, мы можем успешно добавить столбец «отскоков», а недостающие значения просто заполнятся NaN.

Обратите внимание, что мы можем быстро преобразовать значения NaN в другое значение (например, ноль), используя метод fillna() следующим образом:

 #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

Обратите внимание, что значение NaN было преобразовано в ноль.

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:

Как исправить ошибку KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в int.
Как исправить: ValueError: операнды не могут быть переданы с помощью фигур.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *