2016-12-13 3 views
2

Ich habe ein Python-Wörterbuch mit Schlüssel und Werte und ich möchte ein neues Pandas Datenrahmenobjekt mit einer neuen Spalte nur aus Wörterbuch-Werte erstellt erstellen. Was ist der optimalste Weg, dies zu erreichen?Setzen Wörterbuch Werte in Datenrahmen neue Spalte in Python Pandas

+1

Können Sie Probe hinzufügen? Vielleicht funktioniert einfach 'df = pd.DataFrame (d)' – jezrael

+0

Zum Beispiel habe ich ein Wörterbuch als Name (Schlüssel) und Score (Wert) [tom: 100, jerry: 150, micky: 400, donald: 250] Jetzt alle Ich möchte ein Datenframe mit Spaltennamen als "Scores" mit allen Scores (Werten) aus diesem Wörterbuch. Sprich wie df ['scores'] = ... – DevBoy

+0

Nein, * setze das Beispiel in die ursprüngliche Frage nicht in einen Kommentar *. –

Antwort

2

Ich glaube, Sie DataFrame.from_dict brauchen:

d = {'tom':100, 'jerry':150, 'micky':400, 'donald':250} 

df = pd.DataFrame.from_dict(d, orient='index') 
df.columns = ['scores'] 
print (df) 
     scores 
micky  400 
donald  250 
jerry  150 
tom  100 

Eine andere Lösung hinzuzufügen, ist dict mit neuen Spaltennamen DataFrame Konstruktor:

df = pd.DataFrame({'scores':d}) 

print (df) 
     scores 
donald  250 
jerry  150 
micky  400 
tom  100 

Last, wenn Namen von Index reset_index hinzufügen entfernen müssen:

print (df.reset_index(drop=True)) 
    scores 
0  400 
1  250 
2  150 
3  100 

Eine andere Lösung nur values von dict verwenden, aber Python Wörterbücher sind immer ungeordnet, so erhalten zufällige Reihenfolge der Werte in df:

print (d.values()) 
dict_values([400, 250, 150, 100]) 

#python 3 add list 
df = pd.DataFrame({'scores': list(d.values())}) 
print (df) 
    scores 
0  400 
1  250 
2  150 
3  100 
+0

Danke @jezrael für Ihre schnelle Antwort. Ich möchte das Ergebnis erreichen, wie es bei Ihrem letzten Schritt gezeigt wurde - ohne Namen. Ich suche nach einem optimierten Weg, um dies zu erreichen, da mein Beispiel ein kleiner Datensatz war. Was ist, wenn wir ein riesiges Dataset haben und zuerst das ganze Wörterbuch in den Datenrahmen laden und dann die Namen löschen? Können wir Werte direkt in Datenrahmen laden? – DevBoy

+0

Ich füge letzte Lösung hinzu, ich glaube, dass es am schnellsten sein kann. – jezrael

+0

Danke @jezrael. Ich denke deine letzte Lösung ist gut. – DevBoy

Verwandte Themen