1 回答
TA贡献1818条经验 获得超8个赞
我将首先在df_ads以下位置创建另一列:
# If `df_mapping['CODE']` is `int`
df_ads['CODE'] = df_ads['ad_post_code'].apply(lambda x: int(x[:4]))
# If `df_mapping['CODE']` is `str`
# df_ads['CODE'] = df_ads['ad_post_code'].apply(lambda x: x[:4])
然后我将DataFrame.merge用来执行两个数据帧的内部合并:
df_ads.merge(df_mapping, left_on='CODE', right_on='CODE', how='inner')
我冒昧地修改您的数据以生成一个可行的示例:
# df_ads['ad_post_code']
0 1567 JA
1 3893 GB
2 5091 BE
3 1087 MB
4 7905 GW
5 5121 ZH
6 1011 XX
# df_mapping
CODE NUTS_3
0 1011 NL326
1 1012 NL326
2 1013 NL326
3 1014 NL326
4 1015 NL326
5 1016 NL326
6 1567 XSFDF
输出:
ad_post_code CODE NUTS_3
0 1567 JA 1567 XSFDF
1 1011 XX 1011 NL326
如果每个代码都df_ads['CODE']存在,df_mapping['CODE']那么你应该得到正确的输出。
编辑
如果你想知道列表中的df_mapping是否完整,你可以这样做:
df_ads.loc[np.logical_not(df_ads['CODE'].isin(df_mapping['CODE']))]
缺失数据:
ad_post_code CODE
id
1 3893 GB 3893
2 5091 BE 5091
3 1087 MB 1087
4 7905 GW 7905
5 5121 ZH 5121
添加回答
举报