<p>我不知道你尝试了什么,但你可以这样开始。
我没有考虑10秒的计时,但很容易添加。我使用<code>geopy.distance.distance</code>来测量距离。下面的代码将这些遭遇存储在一个列表中,您可以从中轻松构建一个新的数据帧</p>
<pre><code>import numpy as np
import geopy.distance
# threshold distance in km
threshold_distance = 0.1
# list of IDs
id_list = list(df.index.levels[1])
# combinations of IDs
combs = list(combinations(id_list, 2))
# list to store the indices of the meetings
meetings = []
# go through combinations
for i, j in combs:
# get the indices (numbers) of both IDs
i_indices = [a[0] for a in df.iloc[df.index.get_level_values(1) == i].index.values]
j_indices = [a[0] for a in df.iloc[df.index.get_level_values(1) == j].index.values]
# go through the ID's data
for i_index in i_indices:
for j_index in j_indices:
# if the date coincides
if df.at[(i_index, i), "date"]!=df.at[(j_index, j), "date"]:
continue
# use geopy to calculate the distance from the coordinates
coords1 = (df.at[(i_index,i),"lat"],df.at[(i_index, i),"lon"])
coords2 = (df.at[(j_index,j),"lat"],df.at[(j_index, j),"lon"])
if geopy.distance.distance(coords1, coords2).km < threshold_distance:
meetings.append((i_index, j_index))
</code></pre>