Angenommen, ich habe ein Wörterbuch mit 10 Schlüssel-Wert-Paaren. Jeder Eintrag enthält ein Numpy-Array. Die Länge des Arrays ist jedoch nicht für alle gleich.
Wie kann ich einen Datenrahmen erstellen, in dem jede Spalte einen anderen Eintrag enthält?
Wenn ich es versuche:
pd.DataFrame(my_dict)
Ich bekomme:
ValueError: arrays must all be the same length
Wie kann man das überwinden? Ich bin froh, dass Pandas NaN
diese Spalten für die kürzeren Einträge auffüllen.
pd.Series(...)
(vorausgesetzt,import pandas as pd
im Importabschnitt)pd.DataFrame({k: pd.Series(l) for k, l in d.items()})
Hier ist eine einfache Möglichkeit, dies zu tun:
quelle
columns
aber das ist schon die Standardeinstellung. Siehe Pandas Dokumentation - Pandas.DataFrame.from_dictIm Folgenden finden Sie eine Möglichkeit, Ihre Syntax aufzuräumen, aber im Wesentlichen das Gleiche wie bei diesen anderen Antworten zu tun:
Eine ähnliche Syntax gibt es auch für Listen:
Eine andere Syntax für Listen lautet:
Möglicherweise müssen Sie das Ergebnis zusätzlich transponieren und / oder die Spaltendatentypen (float, integer usw.) ändern.
quelle
Dies beantwortet zwar nicht direkt die Frage des OP. Ich fand, dass dies eine hervorragende Lösung für meinen Fall ist, wenn ich ungleiche Arrays hatte und Folgendes mitteilen möchte:
aus der pandas dokumentation
quelle
Sie können auch
pd.concat
zusammenaxis=1
mit einer Liste vonpd.Series
Objekten verwenden:quelle
Beide folgenden Zeilen funktionieren perfekt:
Aber mit% timeit auf Jupyter habe ich ein Verhältnis von 4x Geschwindigkeit für B gegen A, was besonders bei der Arbeit mit einem riesigen Datensatz (hauptsächlich mit einer großen Anzahl von Spalten / Features) ziemlich beeindruckend ist.
quelle
Wenn Sie nicht möchten, dass es angezeigt wird
NaN
und Sie zwei bestimmte Längen haben, funktioniert das Hinzufügen eines Leerzeichens in jeder verbleibenden Zelle ebenfalls.Wenn Sie mehr als zwei Längen von Einträgen haben, ist es ratsam, eine Funktion zu erstellen, die eine ähnliche Methode verwendet.
quelle
pd.DataFrame ([my_dict]) reicht aus!
quelle