我有一个以州名开头的系列,然后列出该州的某些城市,就像这样......
locations = ['Alabama', 'Auburn', 'Tuscaloosa', 'Alaska', 'Fairbanks', 'Arizona', 'Flagstaff', 'Tempe', 'Tuscon']
还有一个接受州名并将其转换为邮政编码的字典,就像这样......
state_codes = {'Alabama': 'AL', 'Alaska': 'AK', 'Arizona': 'AZ'}
我想要的是一个数据框 x,每个邮政编码都正确应用于每个位置,无论该位置是城市还是州...
State RegionName
'Alabama' AL
'Auburn' AL
'Tuscaloosa' AL
'Alaska' AK
'Fairbanks' AK
'Arizona' AZ
'Flagstaff' AZ
'Tempe' AZ
'Tuscon' AZ
...但我似乎无法找到正确的代码让我到达那里。我一直在尝试使用一个临时值,该值会在检测到新状态名称时更改:
temp = 'fail'
newAreas = []
for k in range(0, len(locations)):
if (locations[k] in state_codes.items()):
temp = state_codes[locations[k]]
newAreas.append(temp)
...但这会返回一个完全包含“失败”一词的列。我做错了什么?
请您参考如下方法:
使用map和ffill
In [483]: locations = ['Alabama', 'Auburn', 'Tuscaloosa', 'Alaska', 'Fairbanks',
'Arizona', 'Flagstaff', 'Tempe', 'Tuscon']
In [484]: state_codes = {'Alabama': 'AL', 'Alaska': 'AK', 'Arizona': 'AZ'}
In [485]: df = pd.DataFrame({'State': locations})
In [496]: df['RegionName'] = df['State'].map(state_codes).ffill()
In [497]: df
Out[497]:
State RegionName
0 Alabama AL
1 Auburn AL
2 Tuscaloosa AL
3 Alaska AK
4 Fairbanks AK
5 Arizona AZ
6 Flagstaff AZ
7 Tempe AZ
8 Tuscon AZ
