[Lösung] ValueError: Falsche Anzahl von Spalten in Zeile 2

Problemeinführung

Ein Code, den ich in Numpy geschrieben habe, besteht darin, die Daten in der Datei Titanic data.csv mit einem Komma- Trennzeichen zu lesen:

import numpy as np
with open('泰坦尼克号数据.csv', encoding = 'utf-8') as f:
    csv_data = np.loadtxt(f, str, delimiter=',')
print(csv_data)

Nach dem Klicken auf „Ausführen“ wird ein Fehler gemeldet:

ValueError: Wrong number of columns at line 2

Problemanalyse

Schauen Sie sich zunächst an, was diese Fehlermeldung bedeutet: Die zweite Zeilen- und Spaltennummer ist falsch.

Dann ist es logisch zu überlegen, warum die Anzahl der Spalten in der zweiten Zeile falsch ist. Enthält die Datenzelle auch Kommas und wird bei der Ausführung von delmiter=',' auch an dieser Stelle segmentiert, die nicht segmentiert werden sollte?

Gehen Sie also zur Überprüfung zu Excel, und in der Spalte „Name“ sind zusätzliche Kommas vorhanden :

 Dies führte dazu, dass die zweite Zeile eine Spalte mehr hatte als die erste Zeile, was zu einem Fehler bei der Anzahl der Spalten in der zweiten Zeile führte.

Lösung

Nachdem ich den Grund kenne, kann ich es lösen. Da ich auf dieses Problem gestoßen bin, um die Numpy-Hausaufgaben zu erledigen, habe ich die Chance genutzt und eine spekulative Methode gewählt: Suchen und ersetzen Sie in Excel das Komma (Hinweis: englisches Format , ) als Doppelpunkt (:)

Speichern Sie dann die CSV-Datei als „Titanic data 2.csv“ und ändern Sie den Code, um die neue CSV-Datei zu laden:

import numpy as np
with open('泰坦尼克号数据2.csv', encoding = 'utf-8') as f:
    csv_data = np.loadtxt(f, str, delimiter=',')
print(csv_data)

Nach dem Klicken auf „Ausführen“ wird kein Fehler gemeldet und die csv_data werden reibungslos ausgedruckt:

[['PassengerId' 'Survived' 'Pclass' ... 'Fare' 'Cabin' 'Embarked']
 ['1' '0' '3' ... '7.25' '' 'S']
 ['2' '1' '1' ... '71.2833' 'C85' 'C']
 ...
 ['889' '0' '3' ... '23.45' '' 'S']
 ['890' '1' '1' ... '30' 'C148' 'C']
 ['891' '0' '3' ... '7.75' '' 'Q']]

Zusammenfassung der Erfahrungen

Der Grund für diese Art von Fehler liegt darin, dass die Anzahl der Spalten nicht gleich ist. Daher muss in den Originaldaten die Zeile lokalisiert werden, in der der Fehler in der Anzahl der Spalten gemäß der angegebenen Zeilennummer zum ersten Mal nicht gleich ist durch das Fragezeichen in Falsche Spaltenanzahl in Zeile (?), damit Finden Sie den Grund für die ungleiche Spaltenanzahl.

Ich denke du magst

Origin blog.csdn.net/yuanchenglei/article/details/121316243
Empfohlen
Rangfolge