如何在Pandas数据框中检测几乎重复的位置?

时间:2019-02-25 13:14:07

标签: python pandas geolocation

我有一个包含地理编码地址的Pandas数据框。我想检测所有几乎相同的纬度和经度的地址,例如都在纬度和经度的0.0001度以内。我想将结果记录在一个新字段中:“可能重复”或“唯一”。

这是一个例子。给出以下内容:

ID  Latitude    Longitude
A   31.26418    -86.36509
B   44.52456    -79.52941
C   45.48913    -87.77436
D   54.03550    -85.87823
E   37.05611    -83.53684
F   53.26993    -85.28143
G   45.48910    -87.77440
H   51.60626    -83.33459

输出应为:

ID  Latitude    Longitude   Status
A   31.26418    -86.36509   Unique
B   44.52456    -79.52941   Unique
C   45.48913    -87.77436   Possible Duplicate
D   54.03550    -85.87823   Unique
E   37.05611    -83.53684   Unique
F   53.26993    -85.28143   Unique
G   45.48910    -87.77440   Possible Duplicate
H   51.60626    -83.33459   Unique

注意:这不是类似Detecting almost duplicate rows

的组合类型问题

最Python化的方式是什么?

1 个答案:

答案 0 :(得分:1)

您可以将纬度和经度值四舍五入到小数点后四位(按照您的建议,直到0.0001),然后继续检查重复项。

df['Status'] = 'Unique'
df.loc[df[df.loc[:, ['Latitude', 'Longitude']].round(4).duplicated(keep=False)].index, 'Status'] = 'Possible duplicate'