236 votes

Comment créer un dictionnaire de deux colonnes de DataFrame de Pandas ?

Quelle est la manière la plus efficace d'organiser le Dataframe pandas suivant :

données =

Position    Letter
1           a
2           b
3           c
4           d
5           e

dans un dictionnaire comme alphabet[1 : 'a', 2 : 'b', 3 : 'c', 4 : 'd', 5 : 'e'] ?

2voto

rhug123 Points 2211

Voici deux autres voies testées avec les df suivants.

df = pd.DataFrame(np.random.randint(0,10,10000).reshape(5000,2),columns=list('AB'))

en utilisant to_records()

dict(df.to_records(index=False))

en utilisant MultiIndex.from_frame()

dict(pd.MultiIndex.from_frame(df))

Heure de chacun.

24.6 ms ± 847 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
1.86 ms ± 11.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

2voto

Greg Werner Points 1

J'aime la méthode de Wouter, cependant le comportement avec les valeurs dupliquées pourrait ne pas être ce que l'on attend et ce scénario n'est pas discuté dans un sens ou dans l'autre par le PO malheureusement. Wouter, choisira toujours la dernière valeur pour chaque clé rencontrée. En d'autres termes, il continuera à écraser la valeur de chaque clé.

Le comportement attendu dans mon esprit serait plutôt du type Créer un dict en utilisant deux colonnes de dataframe avec des doublons dans une colonne. où une liste est conservée pour chaque clé.

Donc, pour le cas de la conservation des doublons, laissez-moi vous soumettre df.groupby('Position')['Letter'].apply(list).to_dict() (Ou peut-être même un ensemble au lieu d'une liste)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X