Как исправить: длина значений не соответствует длине индекса
Ошибка, с которой вы можете столкнуться при использовании панд:
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: операнды не могут быть переданы с помощью фигур.