import pandas as pd import numpy as np import math

读取商品信息

goods_df = pd.read_excel('D:\pythonProject3\商品信息\商品打包.xlsx') goods_df = goods_df[['新商品GPS纬度', '新商品GPS经度', '商品编号', '打包数量']] goods_df = goods_df.dropna()

读取会员信息

members_df = pd.read_excel('D:\pythonProject3\打包问题\会员信息.xlsx') members_df = members_df[['会员编号', '会员GPS纬度', '会员GPS经度', '预订商品限额']] members_df = members_df.dropna()

初始化会员挑选结果

results = []

遍历每个会员

for index, member in members_df.iterrows(): member_id = member['会员编号'] member_lat = member['会员GPS纬度'] member_lon = member['会员GPS经度'] member_limit = member['预订商品限额']

# 初始化会员挑选的商品数量和商品编号
selected_quantity = 0
selected_goods = []

# 对商品列表进行排序,优先选择距离最近的商品
goods_df['距离'] = np.sqrt((goods_df['新商品GPS纬度'] - member_lat) ** 2 + (goods_df['新商品GPS经度'] - member_lon) ** 2)
goods_df = goods_df.sort_values('距离')

# 遍历商品列表
for index, good in goods_df.iterrows():
    good_id = good['商品编号']
    good_quantity = good['打包数量']

    # 如果商品数量加上已选商品数量不超过会员限额
    if selected_quantity + good_quantity <= member_limit:
        # 更新已选商品数量和商品编号
        selected_quantity += good_quantity
        selected_goods.append(good_id)

        # 删除已选择的商品,避免重复选择
        goods_df.drop(index, inplace=True)

# 添加会员挑选结果到结果列表
results.append({'会员编号': member_id, '挑选商品数量': selected_quantity, '挑选商品编号': selected_goods, '预订商品限额': member_limit})

输出结果

for result in results: print('会员编号:', result['会员编号']) print('挑选商品数量:', result['挑选商品数量']) print('预订商品限额:', result['预订商品限额']) print('挑选商品编号:', result['挑选商品编号']) print('\n')


原文地址: https://www.cveoy.top/t/topic/fAJM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录