2017-08-18 2 views
2

Ich habe eine CSV-Datei mit folgendem Format:Import Schwierigkeiten mit read_csv

0;2017-02-16 15:08:16;81,307877;;;;;;; 

So, Semikolon als Trennzeichen, Datum und Uhrzeit und einem Schwimmer mit Komma. Und am Ende ein Haufen Semikolons.

Pandas csv_read sollte eine gute Lösung dafür sein. Nach vielen Versuchen fühle ich mich jedoch ziemlich festgefahren. Ich verstehe nicht, wie man mit dem ";" am Ende der Datei umgehen soll und ich bin ziemlich unsicher, ob ich verstehe, wie csv_read funktioniert, wenn es um die detaillierteren Kontrollmöglichkeiten geht.

Für jemanden, der regelmäßig csv_read verwendet, muss das eine sehr einfache Frage sein ... ich hoffe. Ich habe schon einige Zeit dafür aufgewendet ...

Ein Beispiel:

pd.read_csv(r'C:\Users\Henrik\PycharmProjects\Regforce\Kort_del_1.csv', 
encoding="latin", sep=';', decimal=',', usecols=[0, 1, 2, 3]) 

Im Gegenzug erhalte ich:

ÿþ0 Unnamed: 1 Unnamed: 2 Unnamed: 3 
0  NaN   NaN   NaN   NaN 
1  NaN   NaN   NaN   NaN 

Ich habe auch Arten zu „zwingen“, versuchte für jeden die Spalten ohne Ergebnis ... ???

Update: Ich fand einen interessanten Beitrag, http://pythonforengineers.com/website-visitors-part-2-dealing-with-corrupt-data/ ... also habe ich den HEX-Reader heruntergeladen und einige seltsame Dinge am Anfang meiner Eingabedatei gefunden. Dies scheint der Grund für das "ÿþ0" in der obigen Tabelle zu sein. Ich kann es nicht sehen, wenn ich es in Notebook öffne, aber es ist sicher in der Datei.

Kann dies der Ursprung der NaN in der Datei sein? Und wie gehe ich damit um? Scheint wie read_csv die Existenz der Spalten zu identifizieren, aber ich kann keine Werte erhalten ...?

Antwort

2

würde ich read_csv auf diese Weise verwenden:

df = pd.read_csv('yourfile.csv', sep=';', header=None, decimal=',', usecols=[0,1,2]) 

so alles zu lesen und da man am Ende Semikolons haben Sie sind nicht daran interessiert, man denke nur an die nur die ersten drei Spalten.

EDIT: Dank piRSquared Kommentar, decimal=',' zu den Argumenten hinzufügen.

0

Das Problem wird als mit der Eingabedatei verbunden identifiziert. Ich tat, was ich sollte zuallererst getan haben: - Erstellen Sie eine neue Datei mit dem gleichen Aufbau wie die, die importiert werden soll, und dann - Test

Mit einer solchen Datei, der Import mit read_csv nahm mich weniger als eine Minute einzurichten und an meine Bedürfnisse anzupassen.

So wird das Problem zum Verständnis der Eingabedatei konvertiert. Es gibt Dinge, die man mit einem HEX-Reader sehen kann, was sonst nicht sichtbar ist ... Aber das ist ein ganz anderes Thema.