当一些输出重复时,如何在pandas中迭代dict

mmy*_*g77 1 python pandas

我有一个以州名开头的系列,然后列出该州的某些城市,就像这样......

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'的列.我究竟做错了什么?

Zer*_*ero 5

使用mapffill

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)