python - 计算一定距离内的位置数量

标签 python dataframe conditional-statements

我有一个名为 SD_Apartments 的数据框,它有 3 个变量:名称(对象)、纬度 (float64)、经度 (float64)。这是公寓名称及其坐标的列表。

我有另一个名为 SD_Coffee 的数据框,它有 3 个变量:名称(对象)、纬度 (float64)、经度 (float64)。这是咖啡店名称及其坐标的列表。

我想向 SD_apartments 添加另一个名为 Coffee_count 的变量,该变量将包含 SD_coffee 数据框中列出的距离 SD_apartments 中列出的每间公寓 x(例如 300)米以内的咖啡店位置数量。

这是我正在使用的代码的设置:

import pandas as pd
import geopy.distance
from geopy.distance import geodesic

data = [['Insomnia', 32.784782, -117.129130], ['Starbucks', 32.827521, -117.139966], ['Dunkin', 32.778519, -117.154720]]
data1 = [['DreamAPT', 32.822090, -117.184200], ['OKAPT', 32.748081, -117.130691], ['BadAPT', 32.786886, -117.097536]]
SD_Coffee = pd.DataFrame(data, columns = ['name', 'latitude', 'longitude'])
SD_Apartments = pd.DataFrame(data1, columns = ['name', 'latitude', 'longitude'])

这是我试图用来实现我的目标的代码:

def geodesic_pd(df1, df2_row):
    return [(geodesic([tuple(x) for x in row.values], [tuple(x) for x in df2_row.values]).m for row in df1)] 

SD_Apartments['coffee_count'] = pd.Series([(sum(geodesic_pd(SD_Coffee[['latitude', 'longitude']], row) < 300) for row in SD_Apartments[['latitude', 'longitude']])])

如果运行它并打印 SD_Apartments,您将看到 SD_Apartments 如下所示:

       name  ...                                       coffee_count
0  DreamAPT  ...  <generator object <genexpr> at 0x000002E178849...
1     OKAPT  ...                                                NaN
2    BadAPT  ...                                                NaN

最佳答案

这可能会对您有所帮助:

import pandas as pd
df = pd.DataFrame({'geodesic': [1, 10, 8, 11, 20,2,2],'apartment': list('aaceeee')})
df.nsmallest(3, 'geodesic')

执行此操作的另一种方法是使用测地距离使用 K 最近邻:

SKLearn-KNN

关于python - 计算一定距离内的位置数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57258972/

相关文章:

python - 在正则表达式中搜索到字符串末尾

python - 如何在 PyQt 环境中将两个滚动条(垂直和水平)设置为同一个小部件?

javascript - JS - 使用 || 分配条件变量的差异或优点

python - ctypes.ArgumentError : Don't know how to convert parameter

python - 连接到 DataFrame 将给出两个单独的起始索引

python - 根据 pandas 的得分列确定游戏的获胜者

python - 根据另一个数据帧的范围从数据帧中选择最小值

C 中的条件语句和数组(初学者)

R:基于多个条件的两个数据帧的子集

python - SQLAlchemy:使用函数确定查询返回的结果