Як виправити: valueerror: неможливо визначити рядок із невідповідними стовпцями
Помилка, з якою ви можете зіткнутися під час використання панд:
ValueError : cannot set a row with mismatched columns
Ця помилка виникає, коли ви намагаєтеся додати новий рядок до pandas DataFrame, але кількість значень у новому рядку не відповідає кількості стовпців у існуючому DataFrame.
У наступному прикладі показано, як виправити цю помилку на практиці.
Як відтворити помилку
Припустімо, що ми створюємо такі панди DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'], ' points ': [18, 22, 19, 14, 14, 11, 20, 28, 22], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4, 8], ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12, 9]}) #view DataFrame df team points assists rebounds 0 A 18 5 11 1 B 22 7 8 2 C 19 7 10 3 D 14 9 6 4 E 14 12 6 5 F 11 9 5 6 G 20 9 9 7:28 4 12 8 I 22 8 9
Тепер припустімо, що ми спробуємо додати новий рядок у кінець DataFrame:
#define new row to append
new_team = ['I', 30]
#append row to DataFrame
df. loc [ len (df)] = new_team
#view updated DataFrame
df
ValueError : cannot set a row with mismatched columns
Ми отримуємо помилку ValueError , оскільки новий рядок, який ми намагаємося додати, містить лише два значення, а існуючий DataFrame має чотири стовпці.
Як виправити помилку
Найпростіший спосіб виправити цю помилку – використовувати функцію append() , щоб додати новий рядок у кінці DataFrame, який автоматично заповнить відсутні значення NaN:
Наступний синтаксис показує, як використовувати цю функцію на практиці:
#define new row to append new = ['J', 30] #append row to end of DataFrame df = df. append ( pd.Series (new,index= df.columns [: len (new)]), ignore_index= True ) #view updated DataFrame df team points assists rebounds 0 to 18 5.0 11.0 1 B 22 7.0 8.0 2 C 19 7.0 10.0 3 D 14 9.0 6.0 4 E 14 12.0 6.0 5 F 11 9.0 5.0 6 G 20 9.0 9.0 7:28 a.m. 4.0 12.0 8 I 22 8.0 9.0 9 D 30 NaN NaN
Зауважте, що ми не отримуємо жодних помилок ValueError , а новий рядок додано в кінець DataFrame.
Також зауважте, що два відсутні значення в новому рядку були просто заповнені значеннями NaN.
Додаткові ресурси
У наступних посібниках пояснюється, як виправити інші типові помилки в Python:
Як виправити: стовпці перекриваються, але суфікс не вказано
Як виправити: об’єкт «numpy.ndarray» не має атрибута «додавання».
Як виправити: якщо ви використовуєте всі скалярні значення, вам потрібно передати індекс