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

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)


...但是返回的列完全是'fail'。我究竟做错了什么?

最佳答案

使用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

关于python - 当某些输出重复时,如何遍历 Pandas 中的命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48911830/

10-12 15:26