You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求:基于邮政编码匹配合并两个Excel DataFrame的简易实现

如何用基础Python方法按邮政编码匹配合并两个Excel DataFrame

没问题,我明白你想避开geopandas这类库或者API,用最基础的逻辑来实现这个匹配合并需求——把df2里对应邮政编码的单行坐标数据,复制到df1里同邮编的每一行中。其实用字典做快速查找+循环遍历就能轻松搞定,完全符合你想要的简单方式,下面是具体的实现步骤和代码:

第一步:先创建示例数据(模拟你的Excel表格)

首先我们用pandas把你给出的示例数据转换成DataFrame,如果你是从Excel读取的话,只需要把这部分换成pd.read_excel()即可:

import pandas as pd

# 模拟你的dataframe1(从Excel读取的话用pd.read_excel("你的文件路径.xlsx"))
data1 = {
    'postcode': [2000, 2000, 2001, 2001, 2001, 2004],
    'price': [150, 250, 350, 550, 650, 750],
    'type': ['A', 'B', 'C', 'A', 'B', 'C']
}
df1 = pd.DataFrame(data1)

# 模拟你的dataframe2
data2 = {
    'postcode': [2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011],
    'lat': [1.2, 1.3, 1.5, 1.6, 1.7, 1.9, 1.2, 1.3, 1.5, 1.6, 1.7, 1.9],
    'lon': [1.2, 1.5, 1.2, 1.5, 1.8, 1.98, 1.2, 1.5, 1.2, 1.5, 1.8, 1.98]
}
df2 = pd.DataFrame(data2)

第二步:把df2转成字典用于快速查找

我们先把df2里的邮政编码和对应的经纬度做成一个字典,这样后续查找的时候速度会非常快,不用每次都遍历整个df2:

# 构建邮政编码到经纬度的映射字典
postcode_coords = {}
for _, row in df2.iterrows():
    postcode = row['postcode']
    # 把lat和lon存成元组作为字典的值
    postcode_coords[postcode] = (row['lat'], row['lon'])

第三步:遍历df1,匹配并添加经纬度

接下来我们遍历df1的每一行,用if判断当前行的邮政编码是否在字典里,如果存在就把对应的经纬度填进去:

# 先给df1新增lat和lon列,初始值设为None
df1['lat'] = None
df1['lon'] = None

# 遍历df1的每一行进行匹配
for idx, row in df1.iterrows():
    current_postcode = row['postcode']
    # 检查当前邮政编码是否在我们的映射字典里
    if current_postcode in postcode_coords:
        # 如果匹配到,就把对应的lat和lon赋值到当前行
        df1.at[idx, 'lat'], df1.at[idx, 'lon'] = postcode_coords[current_postcode]

最终结果

运行完上面的代码后,你打印df1就能得到你想要的合并结果:

print(df1)

输出结果和你给出的示例完全一致:

postcode  price type  lat   lon
0      2000    150    A  1.2   1.2
1      2000    250    B  1.2   1.2
2      2001    350    C  1.3   1.5
3      2001    550    A  1.3   1.5
4      2001    650    B  1.3   1.5
5      2004    750    C  1.7   1.8

额外说明

如果df1里存在df2没有的邮政编码,对应的lat和lon会是None,你可以根据需求选择删除这些行(用df1 = df1.dropna(subset=['lat', 'lon']))或者填充默认值。

内容的提问来源于stack exchange,提问作者Zack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 17:23:09