Ich werde so viel wie möglich vereinfachen. Ich habe einen DataFrame mit einer Liste von Unternehmen nach Bundesstaat. Einige Staaten sind abgekürzt, andere nicht. Ich möchte den vollen Staatsnamen durch die Abkürzung ersetzen (zB New Jersey bis NJ).Ersetzen String mit Wert des Wörterbuchs
Ich fand ein cooles Modul "US" gefunden here, das alle Zustände und ihre Abkürzungen in einem Wörterbuch auflistet. Ich möchte den vollständigen Namen durch die Abkürzungen ersetzen.
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())
Im Augenblick ist das einzige, was ich in der Lage bin, ist eine Zeichenfolge zu tun verwenden und ersetzen Sie es mit dem Wort „Staat“. Wie ersetze ich den Namen durch die Abkürzungen aus dem Wörterbuch? Ich habe versucht und möchte etwas wie x= x.replace(x, lst_of_abbrv)
aber es ist fehlerhaft, weil Sie nicht offensichtlich mit dict_keys ersetzen können.
Extra-Punkte, wenn Sie sind in der Lage zu erklären, wie diese von dem Datenrahmen
'x = x.replace (x, statez [x])'? – BallpointBen
Die Schlüssel und Werte nicht in verschiedene Listen aufteilen. Überprüfen Sie einfach 'if x in statez'. –
@BallpointBen das war meine erste Anlaufstelle, aber ich bekomme einen KeyError. 'KeyError: 'Oklahoma' in meinem speziellen Beispiel über – MattR