我會盡可能簡化。我有一個DataFrame,其中包含按州列出的業務列表。有些國家是縮寫的,有些則不是。我想用縮寫(例如:新澤西州到新澤西州)替換完整的州名。用字典的值替換字符串
我發現了一個很酷的模塊,「美國」發現here列出在字典中的所有狀態和它們的縮寫。我想要做的是用縮寫代替全名。
代碼:
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())
現在,我能夠做的唯一事情是使用一個字符串,並與「國家」代替。我如何用字典中的縮寫替換名稱?我試過並想要類似x= x.replace(x, lst_of_abbrv)
但它錯誤,因爲你顯然不能用dict_keys替換。
加分,如果你能解釋如何將其應用到列「C」的數據幀
'X = x.replace(X,statez [X])'的整列? – BallpointBen
不要將鍵和值分隔到不同的列表中。只要檢查'如果x in statez'。 –
@BallpointBen這是我第一次去,但我得到一個KeyError。 'KeyError異常:「Oklahoma''在我上面 – MattR