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