import pandas as pd import numpy as np from scipy.spatial import distance

读取Excel文件

file_path = r"D:\pythonProject3\会员信息\附件二:会员信息数据.xlsx" df = pd.read_excel(file_path)

计算距离

df['距离'] = np.sqrt((df['会员GPS纬度'] - df['商品GPS纬度']) ** 2 + (df['会员GPS经度'] - df['商品GPS经度']) ** 2)

筛选距离小于0.1的数据

df = df[df['距离'] < 0.1]

统计会员周围商品数量

df_count = df.groupby('会员编号')['任务号码'].count().reset_index() df_count.columns = ['会员编号', '商品数量']

根据距离排序商品,并保留不超过预订任务限额的部分

df_sorted = df.sort_values(by=['会员编号', '距离']) df_sorted = df_sorted.groupby('会员编号').head(df_sorted['预订任务限额'].min())

计算商品价格

def calculate_price(q1, q2, r): return 0.17074800590158568 * q1 * (q2 ** 6.0973538046874465) / (r ** -7.64598152989214)

计算每个商品的价格

df_sorted['价格'] = calculate_price(df_sorted['q1'], df_sorted['预订任务限额'], df_sorted['距离'])

选取每个商品最小价格

df_min_price = df_sorted.groupby('任务号码')['价格'].min().reset_index()

输出每个商品对应的价格

print(df_min_price)

DpythonProject3会员信息附件二:会员信息数据xlsx其中文件中‘商品GPS纬度’和‘商品GPS经度’两列的数据组成商品的位置信息文件中‘会员编号’是会员的编号会员有很多文件中‘会员GPS纬度’和‘会员GPS经度’两列数据组成会员的位置信息利用位置信息通过欧氏距离算距离r距离用会员和商品的纬度之差的平方加上会员和商品经度之差的平方再开方且只保留r01的数据同时统计该会员周围商品的数量商

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

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