熊猫:检查行是否具有相似的值

时间:2015-12-08 12:21:08

标签: python pandas

我正在使用pandas为地图生成叠加层并使用:

if ((df['latitude'] == new_latitude) & (df['longitude'] == new_longitude)).any():
   continue

确保我不会产生重复点。但是我开始产生的点数与经常产生的点数相差0.001(经度,纬度或两者)。如何以与上述类似的方式防止这种情况发生?

2 个答案:

答案 0 :(得分:1)

IIUC你可以从整个系列中减去然后只过滤点:

thresh = 0.001
lat = df.loc[(df['latitude'] - new_latitude).abs() > thresh, 'latitude']
lon = df.loc[(df['longtitude'] - new_longtitude).abs() > thresh, 'longtitude']

这使用abs来获取绝对值以生成布尔掩码并过滤掉所有重复值和接近重复的值。

答案 1 :(得分:0)

您可以使用numpy.isclose函数,并将atol设置为您的精度:

import numpy as np
prec = 0.001
np.isclose(df['latitude'], new_latitude, atol=prec)

if ((np.isclose(df['latitude'], new_latitude, prec) & (np.isclose(df['longitude'], new_longitude, prec)).any():
   continue