Je vais simplifier autant que possible. J'ai un DataFrame avec une liste d'entreprises par état. Certains États sont abrégés, d'autres non. Je veux remplacer le nom d'état complet par l'abréviation (ex: New Jersey à NJ).Remplacer la chaîne par la valeur du dictionnaire
J'ai trouvé un module cool "US" trouvé here qui liste tous les états et leurs abréviations dans un dictionnaire. Ce que je voudrais faire est de remplacer le nom complet par les abréviations.
code:
import pandas as pd
import numpy as np
import us
dfp = pd.DataFrame({'A' : [np.NaN,np.NaN,3,4,5,5,3,1,5,np.NaN],
'B' : [1,0,3,5,0,0,np.NaN,9,0,0],
'C' : ['Pharmacy of Oklahoma','NY Pharma','NJ Pharmacy','Idaho Rx','CA Herbals','Florida Pharma','AK RX','Ohio Drugs','PA Rx','USA Pharma'],
'D' : [123456,123456,1234567,12345678,12345,12345,12345678,123456789,1234567,np.NaN],
'E' : ['Assign','Unassign','Assign','Ugly','Appreciate','Undo','Assign','Unicycle','Assign','Unicorn',]})
print(dfp)
statez = us.states.mapping('abbr', 'name')
lst_of_abbrv = statez.keys()
lst_of_states = statez.values()
phrase = "Pharmacy of Oklahoma"
for x in phrase.split():
if x in lst_of_states:
x= x.replace(x, 'State')
print(phrase.split())
En ce moment, la seule chose que je peux faire est d'utiliser une chaîne et le remplacer par le mot « Etat ». Comment puis-je remplacer le nom avec les abréviations du dictionnaire? J'ai essayé et je veux quelque chose comme x= x.replace(x, lst_of_abbrv)
mais il erreurs parce que vous ne pouvez évidemment pas remplacer par dict_keys.
points supplémentaires si vous êtes en mesure d'expliquer comment appliquer cette à la colonne « C » du dataframe
'x = x.replace (x, statez [x])'? – BallpointBen
ne sépare pas les clés et les valeurs dans une liste différente. Il suffit de cocher 'if x in statez'. –
@BallpointBen c'était mon premier go-to, mais je reçois un KeyError. 'KeyError: 'Oklahoma'' dans mon exemple spécifique ci-dessus – MattR