【发布时间】:2016-04-26 17:02:39
【问题描述】:
我有一个这样的熊猫数据框。
order_id latitude longitude
0 519 19.119677 72.905081
1 520 19.138250 72.913190
2 521 19.138245 72.913183
3 523 19.117662 72.905484
4 524 19.137793 72.913088
5 525 19.119372 72.893768
6 526 19.116275 72.892951
7 527 19.133430 72.913268
8 528 19.136800 72.917185
9 529 19.118284 72.901114
10 530 19.127193 72.914269
11 531 19.114269 72.904039
12 532 19.136292 72.913941
13 533 19.119075 72.895115
14 534 19.119677 72.905081
15 535 19.119677 72.905081
还有一份清单
DB
Out[658]:
[['523'],
['526', '533'],
['527', '528', '532', '535'],
['530', '519'],
['529', '531', '525', '534'],
['520', '521', '524']]
现在我想对列表元素的数据框进行子集化。一个列表中有 6 个元素,每个元素都有一个 order_id 的子列表。因此,对于每个子元素,我想要相应的纬度和经度。然后我想计算每个order_id location之间的半正弦距离:
DB[2]
['527', '528', '532', '535']
然后我想在主数据帧上对纬度和经度对进行子集化。所以它应该返回一个像这样的数组:
array([[ 19.11824057, 72.8939447 ],
[ 19.1355074 , 72.9147978 ],
[ 19.11917348, 72.90518167],
[ 19.127193 , 72.914269 ]])
(只是一个例子,不是正确的经纬度对)。
我正在做以下事情:
db_lat = []
db_long = []
for i in range(len(DB)):
l = len(DB[i])
for j in range(l):
db_lat.append(tsp_data_unique.latitude[tsp_data_unique['order_id'] ==
''.join(DB[i][j])])
db_long.append(tsp_data_unique.longitude[tsp_data_unique['order_id']
== ''.join(DB[i][j])])
但它为我提供了 DB 中所有经纬度的列表。在这里,我无法区分哪个 lat 和 long 属于哪个 DB 元素。因此,对于每个 DB 元素(在我的情况下为 6 个),我想要 6 个纬度和经度数组。请帮忙。
【问题讨论】: