import pandas as pd
import mpu
from uszipcode import SearchEngine
from bisect import bisect_right

search = SearchEngine()

path = r"C:/Users/Lenovo/Desktop/7.12/仓库邮编分区表列表.xlsx"
data = pd.read_excel(path)

def zipdistance(s,e):

    zip1 = search.by_zipcode(str(s))
    lat1 =zip1.lat
    long1 =zip1.lng

    zip2 =search.by_zipcode(str(e))
    lat2 =zip2.lat
    long2 =zip2.lng

    dis = mpu.haversine_distance((lat1,long1),(lat2,long2))

    return dis


def price(mile):
    mile_limits = [0, 150, 300, 600, 1000, 1400, 1800, float('inf')]
    prices = [2, 3, 4, 5, 6, 7, 8]
    idx = bisect_right(mile_limits, mile)
    return prices[idx-1]


for k in range(data.shape[0]):

    try:

        dis = zipdistance(data.loc[k, '仓库邮编'],data.loc[k, '客户邮编'])
        p = price(dis/1.609344*1.17)
        # data.loc[k, '距离公里']  = dis
        data.loc[k, '距离']  = dis/1.609344*1.17
        data.loc[k, '新zone']  = p

    except:
        print(data.loc[k, '仓库邮编'])

data.to_excel(r'C:/Users/Lenovo/Desktop/7.12/仓库邮编分区表列表111.xlsx')
#%%

 

posted on 2023-07-20 16:59  大大水  阅读(99)  评论(0)    收藏  举报