Як виправити: довжина значень не відповідає довжині індексу


Помилка, з якою ви можете зіткнутися під час використання панд:

 ValueError: Length of values does not match length of index

Ця помилка виникає, коли ви намагаєтеся призначити масив значень NumPy новому стовпцю в pandas DataFrame, але довжина масиву не відповідає поточній довжині індексу.

У наступному прикладі показано, як виправити цю помилку на практиці.

Як відтворити помилку

Припустімо, що у нас є наступні 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)

   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: неможливо перетворити float NaN на int
Як виправити: ValueError: операнди не можна транслювати з фігурами

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *