Як виправити: довжина значень не відповідає довжині індексу
Помилка, з якою ви можете зіткнутися під час використання панд:
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: операнди не можна транслювати з фігурами