如何基于ZIPCode将df2的城市区县信息匹配更新至df1?
解决DataFrame按邮政编码匹配合并的问题
问题核心原因
你遇到的两个问题根源很明确:
- 'key'错误:df1的匹配列是
ZIPCode,df2的是Zip,列名不一致,直接用pd.merge不指定对应列的话,程序找不到共同匹配键。 - 行数变成2400条:
append是把两个DataFrame的行直接追加,不是按列匹配合并,所以2000+400=2400条,完全不是你要的效果。
正确的合并方法
用pd.merge时指定左右DataFrame的匹配列,同时用**左连接(left join)**保留df1的所有数据,匹配df2的地址信息,代码如下:
import pandas as pd # 执行匹配合并,指定左右表的匹配列,用左连接保留df1全部数据 merged_df = pd.merge(df1, df2, left_on='ZIPCode', right_on='Zip', how='left') # 可选:删除重复的Zip列(因为df1已有ZIPCode) merged_df = merged_df.drop(columns=['Zip'])
参数说明
left_on='ZIPCode':指定df1中用来匹配的邮政编码列right_on='Zip':指定df2中对应的邮政编码列how='left':以df1为基准,保留所有2000条数据;如果df1里的某个邮政编码在df2中没有对应记录,city/county/state列会显示NaN
结果验证
合并后的DataFrame行数应该和df1一致(2000条),每条数据都会带上对应的城市、区县、州信息,和你期望的结果一致。
内容的提问来源于stack exchange,提问作者ericclapp
相关产品推荐
相关产品推荐

