我有一个以州名开头的系列,然后列出了该州的某些城市,像这样...
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'。我究竟做错了什么?
最佳答案
使用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
关于python - 当某些输出重复时,如何遍历 Pandas 中的命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48911830/