2017-06-23 6 views

Antwort

2

Ich glaube, Sie Listen Anzeige Werte von dict benötigen - verwenden groupby + apply + to_dict:

d = df.groupby('key')['id'].apply(list).to_dict() 
print (d) 
{1: ['a1', 'a2', 'a3'], 2: ['a4', 'a5'], 3: ['a6']} 

Oder wenn Bedarf list mit Skalare hinzufügen if/else-apply:

d = df.groupby('key')['id'].apply(lambda x: list(x) if len(x) > 1 else x.iat[0]).to_dict() 
print (d) 
{1: ['a1', 'a2', 'a3'], 2: ['a4', 'a5'], 3: 'a6'} 
+0

das ist toll, wenn wir eine Spalte haben, was aber, wenn wir Werte aus mehreren Spalten bekommen müssen? Ich bin auf eine ähnliche Situation gestoßen. Ich habe es versucht, aber keinen Erfolg. Ich denke, map würde es tun, aber nicht sicher! Wenn Sie bereit sind, habe ich hier eine Frage gestellt: https://stackoverflow.com/questions/46623452/map-two-data-frames-to-create-a-dictionary-with-multiple-values-for-a-key -pand –

1

Verwenden Sie ein Wörterbuch Verständnis um den groupby Iterator

{n: v.tolist() for n, v in df.groupby('key').id} 
Verwandte Themen