Lassen Sie sich verwenden, sagt, dass ich eine Textdatei, die wie folgt aussieht:Wie eckige Klammern als Anführungszeichen in Pandas.read_csv
Item,Date,Time,Location
1,01/01/2016,13:41,[45.2344:-78.25453]
2,01/03/2016,19:11,[43.3423:-79.23423,41.2342:-81242]
3,01/10/2016,01:27,[51.2344:-86.24432]
Was ich in der Lage sein mag, dass in lesen wird mit pandas.read_csv
, aber die zweite Zeile wird einen Fehler auslösen. Hier ist der Code, den ich zur Zeit bin mit:
import pandas as pd
df = pd.read_csv("path/to/file.txt", sep=",", dtype=str)
Ich habe versucht zu setzen quotechar
auf „[“, aber das offensichtlich isst nur bis die Linien bis zur nächsten offenen Klammer und das Hinzufügen einer schließende Klammer ergibt eine "String der Länge 2 gefunden" Fehler. Jede Einsicht würde sehr geschätzt werden. Vielen Dank!
aktualisieren
gibt drei primäre Lösungen waren, die angeboten wurden: 1) Geben Sie eine lange Reihe von Namen in den Datenrahmen alle Daten zu ermöglichen, werden eingelesen und dann nachbearbeiten die Daten, 2) Finden Werte in eckigen Klammern und setzen Sie es in Anführungszeichen, oder 3) ersetzen Sie die erste n Kommata durch Semikolons.
Insgesamt glaube ich nicht, dass Option 3 eine brauchbare Lösung im Allgemeinen ist (wenn auch nur für meine Daten), a) was ist, wenn ich Werte in einer Spalte zitieren, die Kommas enthalten, und b) was wenn meine Spalte mit eckigen Klammern ist nicht die letzte Spalte? Das lässt die Lösungen 1 und 2 zurück. Ich denke, Lösung 2 ist besser lesbar, aber Lösung 1 war effizienter und lief in nur 1,38 Sekunden, verglichen mit Lösung 2, die in 3,02 Sekunden lief. Die Tests wurden in einer Textdatei ausgeführt, die 18 Spalten und mehr als 208.000 Zeilen enthielt.
Keine der CSV-Implementierungen, die ich gesehen habe, unterscheiden Open/Close-Anführungszeichen, was das Hauptproblem hier ist. Am besten ist es, wenn Sie die Datei vorverarbeiten und die Klammern durch ausgeglichene Anführungszeichen ersetzen. Dies kann ziemlich einfach mit regulären Ausdrücken geschehen (in Python oder in einem Streaming-Tool wie 'awk'). –
einfach ersetzen] bis [, vor dem Übergeben an CSV loader? – YOU