Um einige Funktionen zu testen, möchte ich eine DataFrame
aus einer Zeichenfolge erstellen . Angenommen, meine Testdaten sehen folgendermaßen aus:
TESTDATA="""col1;col2;col3
1;4.4;99
2;4.5;200
3;4.7;65
4;3.2;140
"""
Was ist der einfachste Weg, diese Daten in einen Pandas einzulesen DataFrame
?
from pandas.compat import StringIO
. Beachten Sie dabei, dass es sich um dieselbe Klasse handelt wie die, die mit Python geliefert wird.pd.read_table()
ist eine äquivalente Funktion, nur etwas bessere Nomenklatur :df = pd.read_table(TESTDATA, sep=";")
.pandas.compat.StringIO
. Auf diese Weise müssen wir nichtStringIO
separat importieren . Daspandas.compat
Paket wird jedoch gemäß pandas.pydata.org/pandas-docs/stable/api.html?highlight=compat als privat betrachtet , sodass die Antwort unverändert bleibt.df.to_csv(TESTDATA)
, verwenden SieTESTDATA.seek(0)
Split-Methode
quelle
df = pd.DataFrame([x.split(';') for x in data.split('\n')[1:]], columns=[x for x in data.split('\n')[0].split(';')])
Eine schnelle und einfache Lösung für interaktives Arbeiten besteht darin, den Text durch Laden der Daten aus der Zwischenablage zu kopieren und einzufügen.
Wählen Sie den Inhalt der Zeichenfolge mit der Maus aus:
In der Python-Shell verwenden
read_clipboard()
Verwenden Sie das entsprechende Trennzeichen:
quelle
Eine herkömmliche CSV mit variabler Breite ist zum Speichern von Daten als Zeichenfolgenvariable nicht lesbar.
.py
Berücksichtigen Sie stattdessen speziell für die Verwendung in einer Datei Rohrleitungsdaten mit fester Breite. Verschiedene IDEs und Editoren verfügen möglicherweise über ein Plugin zum Formatieren von durch Pipes getrenntem Text in eine übersichtliche Tabelle.Verwenden von
read_csv
Speichern Sie Folgendes in einem Dienstprogrammmodul, z
util/pandas.py
. Ein Beispiel ist in der Dokumentzeichenfolge der Funktion enthalten.Nicht funktionierende Alternativen
Der folgende Code funktioniert nicht richtig, da links und rechts eine leere Spalte hinzugefügt wird.
Was
read_fwf
es eigentlich nicht verwenden so viele der optionalen kwargs dieread_csv
und Anwendungen akzeptiert. Daher sollte es überhaupt nicht für Daten verwendet werden, die durch Rohrleitungen getrennt sind.quelle
read_fwf
mehr vonread_csv
s Argumenten als dokumentiert sind, aber es ist wahr, dass einige keine Wirkung haben .Am einfachsten ist es, es in einer temporären Datei zu speichern und dann zu lesen:
Richtige Methode zum Erstellen einer temporären Datei: Wie kann ich eine tmp-Datei in Python erstellen?
quelle