1
votes

La clé est représentée par nan dans le dictionnaire python

J'essaie de convertir un dataframe avec 2 colonnes en tant que dictionnaire avec la première colonne étant la clé et la seconde sa valeur dans un seul dictionnaire.

Échantillon de données:

 {135791059:'blah blah blah blah',135791051:'blah something blah'}

Et voici le code que j'ai essayé

{'id': {'blah blah blah': nan, 'blah something blah}

La sortie est:

map_of_values = pd.Series(f_dataframe.summary.values,index=f_dataframe.id).to_dict()

print(map_of_values)

Je veux que ce soit:

id           summary
135791059    blha blah blah
135791051    blah something blah

Qu'est-ce que je fais de mal? Et aussi je veux itérer sur chaque paire clé / valeur en construisant une chaîne à partir de celle-ci. Est-ce la bonne manière?


4 commentaires

d=dict(df.values) ferait si id est une colonne, vous pouvez également essayer dict(zip(df.id,df.summary))df est le nom de la dataframe


Je n'arrive pas à reproduire votre problème avec l'exemple que vous avez fourni; {100: 'blha blah blah', 200: 'blah something blah'}


Edit: J'ai gardé les valeurs que j'essaie avec pour id. J'obtiens toujours le même résultat qu'avant.


Merci à tous pour les réponses. Mais dans le code, je faisais un traitement sur le dataframe avant de le convertir en dictionnaire. Cela a conduit à la suppression de toutes les valeurs dans le champ id. Désolé, c'était mon mauvais!


4 Réponses :


0
votes

Vous pouvez simplement utiliser le code suivant:

df.set_index('id').to_dict()['summary']


1 commentaires

Même problème. La clé est affichée sous la forme nan.



0
votes

J'ai essayé votre solution comme ci-dessous.

fonctionne bien. Impossible de reproduire l'erreur. Peut-être souhaitez-vous vous enregistrer dans votre bloc de données créé.

f_dataframe= {'id':[135791059,135791051],
        'summary':["blha blah blah", "blah something blah"]}
df = pd.DataFrame(f_dataframe)

map_of_values = df.set_index('id').to_dict()['summary']
print(map_of_values)


0 commentaires

0
votes
  • La méthode df.to_dict () est utilisée pour convertir une trame de données en un dictionnaire de séries ou une liste de type de données en fonction du paramètre orient .
  • orient - Valeur de chaîne, ('dict', 'list', 'series', 'split', 'records', 'index') Définit dans quel dtype convertir les colonnes (séries en).
  • Ex.

              id              summary
    0  135791059       blha blah blah
    1  135791051  blah something blah
    
    {135791059: 'blha blah blah', 135791051: 'blah something blah'}
    

    O / P:

    import pandas as pd
    
    my_dict = {'id':[135791059,135791051],'summary':["blha blah blah", "blah something blah"]}
    df = pd.DataFrame(my_dict)
    print(df)
    records = df.to_dict('records')
    data = {i['id'] :i['summary'] for i in records}
    print(data)
    

0 commentaires

0
votes

Ce problème se produit principalement si vous avez déjà utilisé les valeurs comme colonne. SI vous avez une colonne existante et que vous voulez attribuer des 'clés aux valeurs et créer une nouvelle colonne, elle apparaîtra comme NaN . Vous devez utiliser la colonne existante comme «clé» et la nouvelle colonne souhaitée comme «valeurs» (en changeant simplement la position de la clé et de la valeur dans votre dictionnaire).

Par exemple: votre colonne préexistante est un résumé et votre dict actuel est:

d = {'blah blah blah': 135791059: , 'blah something blah': 135791051}

Cependant, vous devez le corriger comme:

d = {135791059: 'blah blah blah', 135791051: 'blah something blah'}


0 commentaires