Dies mag eine einfache Frage sein, aber ich kann nicht herausfinden, wie das geht. Nehmen wir an, ich habe zwei Variablen wie folgt.
a = 2
b = 3
Ich möchte daraus einen DataFrame erstellen:
df2 = pd.DataFrame({'A':a,'B':b})
Dies erzeugt einen Fehler:
ValueError: Wenn Sie alle Skalarwerte verwenden, müssen Sie einen Index übergeben
Ich habe das auch versucht:
df2 = (pd.DataFrame({'a':a,'b':b})).reset_index()
Dies gibt die gleiche Fehlermeldung.
index=0
, aber das kann zu versehentlichem Missbrauch führen (wenn man denkt, dass ein einzelnes Wörterbuch irgendwie einen mehrzeiligen Datenrahmen erstellen kann)Sie können auch
pd.DataFrame.from_records
Folgendes verwenden, wenn Sie das Wörterbuch bereits zur Hand haben:Sie können den Index auch festlegen, wenn Sie möchten:
quelle
Sie müssen zuerst eine Pandas-Serie erstellen. Der zweite Schritt besteht darin, die Pandas-Serie in einen Pandas-Datenrahmen zu konvertieren.
Sie können sogar einen Spaltennamen angeben.
quelle
pd.Series(data).to_frame('ColumnName')
ist kürzer, obwohl dieses Äquivalent vielleicht direkter ist:pd.DataFrame.from_dict(data, orient='index', columns=['ColumnName'])
Sie können versuchen, Ihr Wörterbuch in eine Liste einzuschließen
my_dict = {'A':1,'B':2}
pd.DataFrame([my_dict])
quelle
Vielleicht bietet Series alle Funktionen, die Sie benötigen:
DataFrame kann als eine Sammlung von Serien betrachtet werden, daher können Sie:
Verketten Sie mehrere Serien zu einem Datenrahmen (wie hier beschrieben ).
Fügen Sie dem vorhandenen Datenrahmen eine Serienvariable hinzu ( Beispiel hier )
quelle
Sie müssen iterables als Werte für die Pandas DataFrame-Spalten angeben:
quelle
Ich hatte das gleiche Problem mit Numpy-Arrays und die Lösung besteht darin, sie zu reduzieren:
quelle
Wenn Sie ein Skalarwörterbuch konvertieren möchten, müssen Sie einen Index einfügen:
Obwohl für ein Listenwörterbuch kein Index erforderlich ist, kann dieselbe Idee auf ein Listenwörterbuch erweitert werden:
Natürlich können Sie für das Listenwörterbuch den Datenrahmen ohne Index erstellen:
quelle
Du könntest es versuchen:
Aus der Dokumentation zum Argument 'orient': Wenn die Schlüssel des übergebenen Diktats die Spalten des resultierenden DataFrame sein sollen, übergeben Sie 'Spalten' (Standard). Andernfalls, wenn die Schlüssel Zeilen sein sollten, übergeben Sie 'index'.
quelle
code
sehr wichtige Wörter zu formatieren , die fett und weniger wichtig sind. Kursivschrift Verwenden Sie bei Bedarf auch ListenPandas Magie bei der Arbeit. Alle Logik ist aus.
Die Fehlermeldung besagt,
"ValueError: If using all scalar values, you must pass an index"
dass Sie einen Index übergeben müssen.Dies bedeutet nicht unbedingt, dass Pandas durch das Übergeben eines Index das tun, was Sie möchten
Wenn Sie einen Index übergeben, behandeln Pandas Ihre Wörterbuchschlüssel als Spaltennamen und die Werte als das, was die Spalte für jeden der Werte im Index enthalten sollte.
Übergeben eines größeren Index:
Ein Index wird normalerweise automatisch von einem Datenrahmen generiert, wenn keiner angegeben wird. Pandas weiß jedoch nicht, wie viele Zeilen
2
und3
Sie möchten. Sie können jedoch expliziter darauf eingehenDer Standardindex basiert jedoch auf 0.
Ich würde empfehlen, beim Erstellen von Datenrahmen immer ein Listenwörterbuch an den Datenrahmenkonstruktor zu übergeben. Für andere Entwickler ist es einfacher zu lesen. Pandas hat viele Vorbehalte. Lassen Sie andere Entwickler nicht zu Experten werden, um Ihren Code zu lesen.
quelle
Die Eingabe muss keine Liste von Datensätzen sein - es kann sich auch um ein einzelnes Wörterbuch handeln:
Welches scheint gleichbedeutend zu sein mit:
quelle
Dies liegt daran, dass ein DataFrame zwei intuitive Dimensionen hat - die Spalten und die Zeilen.
Sie geben die Spalten nur mit den Wörterbuchschlüsseln an.
Wenn Sie nur eindimensionale Daten angeben möchten, verwenden Sie eine Serie!
quelle
Wörterbuch in Datenrahmen konvertieren
Geben Sie der Spalte einen neuen Namen
quelle
Wenn Sie ein Wörterbuch haben, können Sie es mit der folgenden Codezeile in einen Pandas-Datenrahmen verwandeln:
quelle
Geben Sie das Diktat einfach auf eine Liste:
quelle