我有一個包含一些不同元素的數據框,由 ID 標識。對于它們中的每一個,都提供了 LAT、LON。下面提供了一個示例:ID LAT LON2426 0.351649 36.9219412451 0.351666 36.9219392457 0.351687 36.921966我想要一個由元組 (ID1,ID2) 和距離作為值標識的字典:{(2426,2451):d1, (2426,2457):d2, (2451,2457):d3}現在我正在使用以下代碼計算每對之間的距離:distances = {}ids = to_network['ID'].valuesfor id_1 in ids: ids = np.delete(ids, np.where(ids == id_1), axis=0) for id_2 in ids: distances[(id_1,id_2)] = compute_distance_m(to_network.loc[(to_network['ID'] == id_1),'LAT'].values[0],to_network.loc[(to_network['ID'] == id_1),'LON'].values[0],to_network.loc[(to_network['ID'] == id_2),'LAT'].values[0],to_network.loc[(to_network['ID'] == id_2),'LON'].values[0])# Result in mdef compute_distance_m(lat1,lon1,lat2,lon2): coords_1 = (lat1, lon1) coords_2 = (lat2, lon2) return geopy.distance.vincenty(coords_1, coords_2).km*1000#returns{(2426, 2451): 1.9917619328904765, (2426, 2457): 5.083739036769186, (2451, 2457): 3.7473346626876483}問題是這段代碼真的很慢,我在數據集中有十億個實例,所以我正在尋找一個可以直接處理初始數據幀的更好的版本。
添加回答
舉報
0/150
提交
取消