我有一个以州名开头的系列,然后列出该州的某些城市,就像这样......
locations = ['Alabama', 'Auburn', 'Tuscaloosa', 'Alaska', 'Fairbanks', 'Arizona', 'Flagstaff', 'Tempe', 'Tuscon']
Run Code Online (Sandbox Code Playgroud)
和一个带有州名并将它们变成邮政编码的字典,就像这样......
state_codes = {'Alabama': 'AL', 'Alaska': 'AK', 'Arizona': 'AZ'}
Run Code Online (Sandbox Code Playgroud)
我想要的是一个数据框x,每个邮政编码都适用于每个位置,无论该位置是城市还是州...
State RegionName
'Alabama' AL
'Auburn' AL
'Tuscaloosa' AL
'Alaska' AK
'Fairbanks' AK
'Arizona' AZ
'Flagstaff' AZ
'Tempe' AZ
'Tuscon' AZ
Run Code Online (Sandbox Code Playgroud)
...但我似乎找不到合适的代码让我到那里.我一直在尝试使用一个临时值,只要检测到新的州名,它就会改变:
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)
Run Code Online (Sandbox Code Playgroud)
...但是这会返回一个完全单词'fail'的列.我究竟做错了什么?
使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |