【问题标题】:How to double for loop over two dataframes如何在两个数据帧上加倍循环
【发布时间】: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 的值似乎没有更新,我不知道为什么。任何人都知道我做错了什么?

【问题讨论】:

    标签: python dataframe for-loop


    【解决方案1】:

    您的 df_unknown_places_filtered 没有行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多