J'ai la trame de données CSV suivante importée à l'aide de Pandas (les valeurs numériques sont des distances) à l'aide du code suivant p> J'ai créé une liste de forêts que j'utilise: p> résultat: p> et une liste de destinations j utilise: P> {('Coupe 1', 'Bell Bay'): 158, ('Coupe 1', 'Surrey Hills'):194, .....}
3 Réponses :
Utilisez Dataframe.stack code> pour multiindex code> d'abord, puis convertissez-le au dictionnaire par série.TO_DICT code> : I = df.index.tolist()
J = df.columns.values.tolist()
arcs = {(i, j):df.loc[i, j] for i in I for j in J}
Je suppose que nous avons besoin df.set_index ('forêt'). Stack (). To_dict () code>?
@Shubhamsharma - Non, car i = df.index.toliste () code> retour forêt code> S valeurs
Oh, désolé je n'ai pas vu en lisant le Dataframe OP a déjà défini l'index.
Pour clarifier ceci: d code> créé le dictionnaire et arcs code> a recréé le même dictionnaire mais a maintenant été indexé avec la colonne et les noms de lignes? Comment appeler ma valeur de distance dans arcs code>?
@Samvanholsbeeck - c'est la même chose, je n'ai appelé que dictionnaire code> comme d code>;)
Une suggestion serait de boucler sur tous vos tuples à partir de et d'accéder à chaque valeur en utilisant la méthode locum de Pandas Dataframe P> dictionary = {}
for forest_tuple in arcs:
dictionary[(arcs[0], arcs[1])] = df.loc[arcs[0], arcs[1]]
Je ne sais pas si cette approche fonctionne pendant plus de 10 millions d'entrées ou si elle est suffisamment rapide, mais vous pouvez essayer ce qui suit:
dict = {}
for combination in arcs:
dict[combination] = df.loc[combination[0], combination[1]]
print(dict)