我有一个像这样的熊猫数据帧。你知道吗
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']]
现在我想把dataframe子集放到列表元素上。列表中有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 ]])
(只是一个例子,不是正确的lat-long对)。你知道吗
我正在做以下工作:
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])])
但它给了我一个列表,列出了数据库中所有的lat和long。在这里,我无法区分哪些lat和long属于哪些DB元素。因此,对于每个DB元素(在我的例子中是6个),我需要6个lat和long数组。请帮忙。你知道吗
我就是这样解决的。与@Fabio发布的内容类似。你知道吗
首先,我要将您的
int
列转换为str
,以便将数据帧与列表的值进行比较:然后在
order_id
上设置索引:然后你可以这样做:
获取:
编辑: 反复浏览列表,您可以:
相关问题 更多 >
编程相关推荐