J'ai trouvé cette question en essayant de créer un dictionnaire à partir de trois colonnes d'un dataframe pandas. Dans mon cas, le dataframe a les colonnes A, B et C (disons que A et B sont les coordonnées géographiques de longitude et de latitude et C la région / état / etc du pays, ce qui est plus ou moins le cas).
Je voulais un dictionnaire avec chaque paire de valeurs A, B (clé de dictionnaire) correspondant à la valeur de C (valeur de dictionnaire) dans la ligne correspondante (chaque paire de valeurs A, B est garantie d'être unique en raison du filtrage précédent, mais c'est possible d'avoir la même valeur de C pour différentes paires de valeurs A, B dans ce contexte), alors j'ai fait:
mydict = dict(zip(zip(df['A'],df['B']), df['C']))
L'utilisation de pandas to_dict () fonctionne également:
mydict = df.set_index(['A','B']).to_dict(orient='dict')['C']
(aucune des colonnes A ou B n'a été utilisée comme index avant d'exécuter la ligne créant le dictionnaire)
Les deux approches sont rapides (moins d'une seconde sur une base de données de 85 000 lignes, un ordinateur portable double cœur rapide de 5 ans).
Les raisons pour lesquelles je poste ceci:
- pour ceux qui ont besoin de ce genre de solution
- si quelqu'un connaît une solution d'exécution plus rapide (par exemple, pour des millions de lignes), j'apprécierais une réponse.