Skip to main content
 首页 » 编程设计

python之当某些输出将重复时如何遍历 pandas 中的字典

2025年05月04日12bhlsheji

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

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