设置
我有 2 个熊猫数据框:
df_ads
:每一行都包含一个已抓取的房屋广告的信息,并df_ads['ad_post_code']
包含该广告的荷兰邮政编码。
df_mapping
:邮政编码和NUTS3区域之间的映射
我需要将每个广告的邮政编码映射到其 NUTS3 区域。
数据帧
df_ads['ad_post_code'] 看起来像,
0 1567 JA
1 3893 GB
2 5091 BE
3 1087 MB
4 7905 GW
5 5121 ZH
哪里len(df_ads['ad_post_code']) = 85447。
df_mapping 看起来像,
CODE NUTS_3
0 1011 NL326
1 1012 NL326
2 1013 NL326
3 1014 NL326
4 1015 NL326
5 1016 NL326
其中len(df_mapping) = 4074,df_mapping['CODE']显示荷兰邮政编码的前 4 个字符,df_mapping['NUTS_3']是邮政编码的 NUTS3 区域。
换句话说,邮政编码1011属于 NUTS3 区域NL326。
问题
我已经做了一些简单的循环来将广告映射df_ads到 NUTS3 区域。但是,我似乎无法编写正确的循环设置。
nuts3_map = []
# insert postal codes into list
for i in range(0,len(df_ads)):
postal_code_ad = df_ads['ad_post_code'].iloc[i].split()[0]
for j in range(0,len(df_mapping)):
postal_code_map = str(df_mapping['CODE'].iloc[j])
# check if postal code match
if postal_code_ad == postal_code_map:
nuts3_map.append(df_mapping['NUTS_3'].iloc[j])
break
continue
运行 this 给出len(nuts3_map) = 85353while len(df_ads) = 85448,这样df_ads['nuts3'] = nuts3给出ValueError: Length of values does not match length of index。
双循环是最快的方法吗?如果是这样,我如何修复我的 for 循环,使其一切正常?
弑天下
相关分类