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


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

ValueError: Length of values does not match length of index

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

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

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

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#define DataFrame
df = pd.DataFrame({'points': [25, 12, 15, 14],
 'assists': [5, 7, 13, 12]})

#view DataFrame
print(df)

 points assists
0 25 5
1 12 7
2 15 13
3 14 12

Теперь предположим, что мы пытаемся добавить новый столбец под названием «rebounds» в виде массива 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 в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.