我会尽可能简化。我有一个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