DpythonProject3会员信息附件二:会员信息数据xlsx其中文件中‘商品GPS纬度’和‘商品GPS经度’两列的数据组成商品的位置信息文件中‘会员编号’是会员的编号文件中‘会员GPS纬度’和‘会员GPS经度’两列数据组成会员的位置信息利用位置信息通过欧氏距离算距离r经纬度不要转化距离不要转化为实际距离且只保留r01的数据同时统计该会员周围商品的数量商品根据相对于会员的距离从小到大排序商品按
import pandas as pd import math
读取Excel文件
df = pd.read_excel(r'D:\pythonProject3\会员信息\附件二:会员信息数据.xlsx')
计算距离函数
def calculate_distance(lat1, lon1, lat2, lon2): R = 6371 # 地球平均半径,单位为公里 rad_lat1 = math.radians(lat1) rad_lat2 = math.radians(lat2) a = rad_lat1 - rad_lat2 b = math.radians(lon1) - math.radians(lon2) s = 2 * math.asin(math.sqrt(math.pow(math.sin(a/2), 2) + math.cos(rad_lat1) * math.cos(rad_lat2) * math.pow(math.sin(b/2), 2))) distance = s * R return distance
筛选满足条件的数据
df['距离'] = df.apply(lambda row: calculate_distance(row['会员GPS纬度'], row['会员GPS经度'], row['商品GPS纬度'], row['商品GPS经度']), axis=1) df = df[df['距离'] < 0.1]
按距离从小到大排序
df = df.sort_values(by='距离')
计算每个商品的价格
df['商品价格'] = df.apply(lambda row: 0.17074800590158568 * q1 * (q26.0973538046874465) / (row['距离'](-7.64598152989214)), axis=1)
按商品编号和价格进行分组,并取最小价格
df = df.groupby(['任务号码'])['商品价格'].min().reset_index()
输出每个商品对应的价格
print(df[['任务号码', '商品价格']])
原文地址: https://www.cveoy.top/t/topic/ixPZ 著作权归作者所有。请勿转载和采集!