【发布时间】:2022-11-30 16:43:56
【问题描述】:
我有由未知地点组成的数据框,只是一组纬度和经度。此列表包含许多几乎具有相同坐标的地方。我想创建一个带有“过滤的未知地点”的新数据框,其中几乎相同的地点被合并到一个地方。对于每个“过滤的未知地点”,我们都会跟踪一个计数器,指示其包含的未知地点的数量。
我试图用两个 for 循环来解决这个问题;首先循环遍历未知地点,然后在 for 循环中循环遍历过滤后的未知地点,请参见下文。
accuracy = 0.2 #km
df_unknown_places_filtered = pd.DataFrame(columns = ['GpsLatitude', 'GpsLongitude', 'Count'])
for i, row in df_unknown_places.iterrows():
min_dist = 999999
closest = 0
for j, row2 in df_unknown_places_filtered.iterrows():
dist = self.distance(row['GpsLatitude'], row['GpsLongitude'], row2['GpsLatitude'], row2['GpsLongitude'])
if dist < min_dist:
min_dist = dist
closest = j
if min_dist < accuracy:
current_count = df_unknown_places_filtered.at[closest, 'Count']
df_unknown_places_filtered.at[closest,'Count'] = current_count + 1
else:
row_to_insert = {'GpsLatitude':row['GpsLatitude'],
'GpsLongitude':row['GpsLongitude'],
'Count': 1
}
df_unknown_places_filtered = pd.concat([df_unknown_places_filtered, pd.DataFrame.from_records([row_to_insert])], axis = 0)
然而,对于第二个 iterrows,j 的值似乎没有更新,我不知道为什么。任何人都知道我做错了什么?
【问题讨论】: