Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:使用邻接矩阵的高效空间分析_Python_Pandas_Geospatial_Geopy - Fatal编程技术网

Python 熊猫:使用邻接矩阵的高效空间分析

Python 熊猫:使用邻接矩阵的高效空间分析,python,pandas,geospatial,geopy,Python,Pandas,Geospatial,Geopy,我有一个非常大的带有坐标的数据框。让我们以下面的例子为例: df = pd.DataFrame({ 'Buyer': 'Carl Mark Carl Joe Mark Carl'.split(), 'Quantity': [5,2,5,10,1,5], 'Lat':[50.111, 48.777, 50.111, 52.523, 48.777, 50.111], 'Lng' : [8.6805, 9.1807, 8.6805, 13.411, 9.1807, 8.6805], 'Date' :

我有一个非常大的带有坐标的数据框。让我们以下面的例子为例:

df = pd.DataFrame({
'Buyer': 'Carl Mark Carl Joe Mark Carl'.split(),
'Quantity': [5,2,5,10,1,5],
'Lat':[50.111, 48.777, 50.111, 52.523, 48.777, 50.111],
'Lng' : [8.6805, 9.1807, 8.6805, 13.411, 9.1807, 8.6805],
'Date' : [
    DT.datetime(2013,1,1,13,0),
    DT.datetime(2013,1,1,13,5),
    DT.datetime(2013,1,1,20,0),
    DT.datetime(2013,2,6,10,0),
    DT.datetime(2013,2,6,12,0),                                      
    DT.datetime(2013,2,6,14,0),
    ]})

import geopy

df['Point'] = df.apply(lambda row: geopy.Point(row['Lat'], row['Lng']), axis=1)
基于这个数据帧,我需要计算不同时间点之间的距离。通常需要相互比较的点是相同的,例如,当我想计算每天从Carl到所有其他买家的距离时

def dis_calc(df):
    p = geopy.Point(50.111,8.6805)
    sum = 0.0
    for i, row in df.iterrows():
        dist = geopy.distance.distance(p, row['Point']).km
        sum = sum + dist
    return sum


gr = df.groupby(df.Date.map(lambda d: d.date()))
gr.apply(dis_calc)
为了有效地做到这一点,而不必多次计算相同的距离,我希望与买家及其彼此之间的距离建立一个邻接矩阵。所以我可以查询这个矩阵,而不用做距离计算

以以下方式做某事:

     | Carl | Mark | Joe 
----------------------
Carl |10 km | 5km  | 10km
Mark |      | 20km | 15km 
Joe  |      |      | 25km   
您会推荐什么作为该邻接矩阵的数据结构,以及如何实现查找,以便比专用距离计算更快

我将非常感谢任何帮助


Andy

看起来您每天都需要一个邻接矩阵。我建议使用一个字典,其中键是日期,值是数据帧,每个轴都列出了客户。或者你可以看看熊猫的面板上的物体。嗨,丹,恐怕你弄错了。我的想法是,在买家之间有一个邻接矩阵,每个单元格中都有他们之间的距离。我更新了我的问题描述。如果能得到您的意见,我将不胜感激。是的,您展示的是我所说的“日期框架,每个轴都列出了客户。”