2017-05-13 2 views
1

Ich habe eine Anforderung, ein Wörterbuch innerhalb einer Schleife zu erstellen und sie an einen pandas Datenrahmen mit passendem Schlüsselname des dict und Spaltennamens des Datenrahmens anzufügen. Die Schlüsselwertpaare des Wörterbuchs in jeder Iteration könnten unterschiedlich sein. Ein leerer Pandas-Datenrahmen df_podcast wurde am Anfang mit allen möglichen Schlüsseln im Wörterbuch definiert.Wörterbuch an pandas Datenframe in einer Schleife anhängen

Unten ist die Probe eines Codes, der noch nicht abgeschlossen ist

df_podcast=pd.DataFrame(columns=podcast_cols) 

podcast_dict={} 
for j in range(len(podcast[0])): 
    if podcast[0][j].tag=="key": 
     podcast_dict[podcast[0][j].text]=podcast[0][j+1].text 
### Have to append dict to pandas df ############ 

ich anfügen haben podcast_dict df_podcast. Podcast ist eigentlich eine Liste von Listen, hier Ich erwäge gerade nur erste Zeile der Liste

+0

Die letzte Schleife ist möglich, benutze 'df = pd.DataFrame (podcast_dict)'? – jezrael

+0

Die Antwort hier ist sehr hilfreich: https://stackoverflow.com/questions/40973687/create-new-dataframe-in-pandas-with-dynamic-names-also-add-new-column –

Antwort

0

IIUC:

Was Sie tun müssen, ist Ihr Wörterbuch mit der Schleife zu bauen, dann dann Ende Schleife können Sie Ihr Wörterbuch verwenden, um einen Datenrahmen mit zu erstellen:

df1 = pd.DataFrame(podcast_dict) 

und hängen pd.concat mit:

df_podcast = pd.concat([df_podcast, df1]) 
+0

Danke Scott für die Antwort. Aber die Schlüsselnamen, die Anzahl der Schlüsselwertpaare usw. in meinem Wörterbuch unterscheiden sich in jeder Iteration. Ich möchte den Wert in den Datenrahmen einfügen, in dem der Schlüssel des Wörterbuchs mit dem Spaltennamen des Datenrahmens übereinstimmt. zum Beispiel: - wenn das erste Iterationswörterbuch nur zwei Einträge hat {"Track id": 100, "Play count": 10}. Ich sollte Werte nur in Track-ID und Play-Count-Spalten der ersten Zeile des Datenrahmens einfügen. – Leo

+0

Haben Sie es versucht? Pandas führt eine automatische Indexausrichtung durch, und Spalte ist ein Index. Ich habe versucht, einige Dummy-Daten zu überprüfen und Bestellung ist egal. –

0
df = pd.DataFrame([podcast_dict],columns=podcast_dict.keys()) 
df_podcast=pd.concat([df_podcast,df],axis =0).reset_index() 
Verwandte Themen