2016-12-02 5 views
1

Ich versuche, ein Wörterbuch aus zwei Spalten eines Datenrahmens (df)Python Wörterbuch Verständnis mit Pandas

mydict={x :y for x in df['Names'] for y in df['Births']} 

Aber alle Werte gleich sind (der letzte Wert in der Spalte) zu erstellen!

{'Bob': 973, 'Jessica': 973, 'John': 973, 'Mary': 973, 'Mel': 973} 

Ich überprüfte die Spalte und es hat viele andere Werte, was mache ich falsch?

+0

prüfen 'df [[‚Namen‘,‚Geburten‘ ]]. set_index ('Namen'). to_dict() ['Geburten'] '. – Psidom

+1

Da Wörterbuchschlüssel nur einen Wert speichern können, wird jeder Schlüssel mit jedem Wert festgelegt, sodass der zuletzt eingegebene Schlüssel gespeichert wird. –

+0

Versuchen Sie 'dict (zip (dff ['Namen'], dff ['Geburten']))'. – Abdou

Antwort

1

Ich denke, Abdou den Nagel auf den Kopf mit dict(zip(dff['Names'], dff['Births'])) getroffen, aber wenn man es mit einem dict Verständnis tun möchten, können Sie dies tun:

In [1]: import pandas as pd 

    In [2]: df = pd.DataFrame(
     ...: [{'Births': 971, 'Names': 'Bob'}, 
     ...: {'Births': 972, 'Names': 'Jessica'}, 
     ...: {'Births': 973, 'Names': 'John'}, 
     ...: {'Births': 974, 'Names': 'Mary'}, 
     ...: {'Births': 975, 'Names': 'Mel'}]) 

    In [3]: {d['Names']: d['Births'] for d in df.to_dict(orient='records')} 
    Out[3]: {'Bob': 971, 'Jessica': 972, 'John': 973, 'Mary': 974, 'Mel': 975} 
+0

Vielen Dank dafür! – AboJoe

Verwandte Themen