0
votes

Créer un dictionnaire basé sur la matrice Data Cadre

J'ai la trame de données CSV suivante importée à l'aide de Pandas (les valeurs numériques sont des distances) xxx pré>

à l'aide du code suivant p> xxx pré>

J'ai créé une liste de forêts que j'utilise: p> xxx pré>

résultat: p> xxx pré>

et une liste de destinations j utilise: P>

{('Coupe 1', 'Bell Bay'): 158, ('Coupe 1', 'Surrey Hills'):194, .....}


0 commentaires

3 Réponses :


1
votes

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}


5 commentaires

Je suppose que nous avons besoin df.set_index ('forêt'). Stack (). To_dict () ?


@Shubhamsharma - Non, car i = df.index.toliste () retour forêt 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 créé le dictionnaire et arcs 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 ?


@Samvanholsbeeck - c'est la même chose, je n'ai appelé que dictionnaire comme d ;)



0
votes

Une suggestion serait de boucler sur tous vos tuples à partir de xxx pré>

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]]


0 commentaires

0
votes

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)


0 commentaires