2015-12-08 40 views
1

我產生疊加使用熊貓和使用的地圖:熊貓:檢查是否行有相似的價值觀

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

,以確保我不會產生重複點。但是我開始產生0.001個不同的點(不論是經度還是緯度)都比已經產生的要多。我怎樣才能以上述類似的方式來防止這種情況?

回答

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得到絕對值產生一個布爾面具和過濾所有重複和近重複的值了。

+0

這是一次大熊貓據幀是完整的使用?我希望不要用if語句來生產它們,因爲一旦生產出來就會產生更多的0.001差異點,從而增加大量運行的時間。 – Abi

+0

你必須解釋數據是如何加載的,通常雖然增加一個df迭代是昂貴的 – EdChum

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