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

如何在pandas中新增第三列计算两个邮政编码之间的距离

Pandas新增邮编距离列实现方案
  • 先导入所需依赖
import pandas as pd
import pgeocode
  • 推荐高性能向量化实现(无需逐行调用,适合全量数据计算)
    该实现避免了在循环中重复初始化GeoDistance实例,运行效率远高于逐行调用自定义函数:
# 仅初始化一次美国邮编距离计算实例
usa_zip_cal = pgeocode.GeoDistance('us')
# 直接传入两列邮编做批量计算,返回结果单位为公里,存入Distance列
df['Distance'] = usa_zip_cal.query_postal_code(df['source_zipcode'], df['destination_zipcode'])
  • 自定义函数适配实现(仅适合小数据量场景)
    如果你需要沿用你提供的自定义函数逻辑,可以使用apply方法实现:
def get_distance(x,y):
    # x、y分别为出发地、目的地邮编
    usa_zipcodes = pgeocode.GeoDistance('us')
    distance_in_kms = usa_zipcodes.query_postal_code(x,y)
    return distance_in_kms

# 逐行调用函数计算距离
df['Distance'] = df.apply(lambda row: get_distance(row['source_zipcode'], row['destination_zipcode']), axis=1)

注意:如果存在邮编格式错误、空值、无效邮编的情况,计算返回的距离值会为NaN,建议计算前先对两列邮编做数据清洗,过滤无效值后再执行计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:15:05