Oplossing: valueerror: kan geen rij definiëren met niet-overeenkomende kolommen
Een fout die u kunt tegenkomen bij het gebruik van panda’s is:
ValueError : cannot set a row with mismatched columns
Deze fout treedt op wanneer u probeert een nieuwe rij toe te voegen aan een Panda’s DataFrame, maar het aantal waarden in de nieuwe rij komt niet overeen met het aantal kolommen in het bestaande DataFrame.
Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.
Hoe de fout te reproduceren
Stel dat we de volgende panda’s DataFrame maken:
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
Stel nu dat we proberen een nieuwe rij toe te voegen aan het einde van het 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
We ontvangen een ValueError omdat de nieuwe rij die we proberen toe te voegen slechts twee waarden heeft, maar het bestaande DataFrame vier kolommen heeft.
Hoe u de fout kunt oplossen
De eenvoudigste manier om deze fout op te lossen is door de functie append() te gebruiken om de nieuwe regel aan het einde van het DataFrame toe te voegen, waardoor de ontbrekende waarden automatisch worden gevuld met NaN:
De volgende syntaxis laat zien hoe u deze functie in de praktijk kunt gebruiken:
#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
Houd er rekening mee dat we geen ValueError ontvangen en dat de nieuwe regel is toegevoegd aan het einde van het DataFrame.
Merk ook op dat de twee ontbrekende waarden in de nieuwe rij eenvoudigweg waren gevuld met NaN-waarden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:
Oplossing: Kolommen overlappen elkaar, maar er is geen achtervoegsel opgegeven
Oplossing: Object ’numpy.ndarray‘ heeft geen ‚append‘-attribuut
Oplossing: als u alle scalaire waarden gebruikt, moet u een index doorgeven