Je voudrais ajouter une colonne 'D' à un dataframe comme ceci:
U,L
111,en
112,en
112,es
113,es
113,ja
113,zh
114,es
basé sur le dictionnaire suivant:
d = {112: 'en', 113: 'es', 114: 'es', 111: 'en'}
de sorte que la trame de données résultante apparaisse comme:
U,L,D
111,en,en
112,en,en
112,es,en
113,es,es
113,ja,es
113,zh,es
114,es,es
Jusqu'ici, j'ai essayé la méthode pd.join()
mais je ne peux pas comprendre comment cela fonctionne avec les dictionnaires.
Appelez map
et transmettez le dict, cela effectuera une recherche et retournera la valeur associée pour cette clé:
In [248]:
d = {112: 'en', 113: 'es', 114: 'es', 111: 'en'}
df['D'] = df['U'].map(d)
df
Out[248]:
U L D
0 111 en en
1 112 en en
2 112 es en
3 113 es es
4 113 ja es
5 113 zh es
6 114 es es
Voici un moyen plus simple qui devrait bien fonctionner aussi:
df["D"] = pd.Series(d)
Remarque: les clés dict doivent être dans l’index DataFrame pour cela.
J'ai eu TypeError: 'dict' object is not callable
error pour la solution EdChum lorsque j'essaie d'utiliser index.map () ... Et je n'ai pas trouvé de moyen d'obtenir l'index en tant que série.
J'ai donc trouvé une autre solution à ce problème en créant d'abord un objet Series à partir de l'objet dict.
new_d = pd.Series(d)
Et puis faites le pd.join avec la colonne que vous aimez. Cela peut aider.