基于指定列合并DataFrames:关联观影者与邮政编码数据集
合并DataFrames补充邮编对应的城市信息
没问题,我来帮你搞定这个需求!你已经有了两个关键的DataFrame:一个是包含观众邮编的zipcodes,另一个是带邮编-城市映射的zip_codes,接下来只需要用pandas的合并操作就能把城市信息补进去。
第一步:先确认连接列的名称(避坑必备)
首先得确保两个数据集里的邮编列名称对应得上——毕竟如果一个叫zip_code,另一个叫Zipcode,直接合并会找不到匹配项。先跑两行代码看看列名:
# 查看你的观众数据列 print(zipcodes.columns) # 查看邮编数据库的列 print(zip_codes.columns)
第二步:执行合并操作
这里推荐用左连接(how='left'),这样能保证你原有的观众数据一条都不会丢,哪怕某个邮编在数据库里找不到对应城市,只会显示NaN,后续你可以按需处理这些缺失值。
情况1:两个邮编列名称不同(比如zipcodes是zip_code,zip_codes是Zipcode)
# 指定左右两边的连接列 merged_data = pd.merge(zipcodes, zip_codes, left_on='zip_code', right_on='Zipcode', how='left')
情况2:两个邮编列名称完全一致(比如都是zip_code)
那就更简单了:
merged_data = pd.merge(zipcodes, zip_codes, on='zip_code', how='left')
第三步:整理合并后的结果(可选但实用)
合并后可能会出现重复的邮编列(比如上面情况1里的zip_code和Zipcode),或者你只想保留需要的列,比如原观众数据加上城市列:
# 删除重复的邮编列(如果有的话) merged_data = merged_data.drop('Zipcode', axis=1) # 按需筛选列,比如保留原所有列+城市列 final_data = merged_data[['zip_code', 'City'] + [col for col in zipcodes.columns if col != 'zip_code']]
小提醒
别忘了你之前已经把zipcodes的zip_code设为object类型,一定要确保zip_codes里的邮编列也是同样的类型(比如读取的时候加dtype={'Zipcode': object}),不然可能会因为类型不匹配导致合并失败哦!
内容的提问来源于stack exchange,提问作者Samantha Santoni
相关产品推荐
相关产品推荐

