1
我產生疊加使用熊貓和使用的地圖:熊貓:檢查是否行有相似的價值觀
if ((df['latitude'] == new_latitude) & (df['longitude'] == new_longitude)).any():
continue
,以確保我不會產生重複點。但是我開始產生0.001個不同的點(不論是經度還是緯度)都比已經產生的要多。我怎樣才能以上述類似的方式來防止這種情況?
我產生疊加使用熊貓和使用的地圖:熊貓:檢查是否行有相似的價值觀
if ((df['latitude'] == new_latitude) & (df['longitude'] == new_longitude)).any():
continue
,以確保我不會產生重複點。但是我開始產生0.001個不同的點(不論是經度還是緯度)都比已經產生的要多。我怎樣才能以上述類似的方式來防止這種情況?
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
得到絕對值產生一個布爾面具和過濾所有重複和近重複的值了。
你可以使用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
這是一次大熊貓據幀是完整的使用?我希望不要用if語句來生產它們,因爲一旦生產出來就會產生更多的0.001差異點,從而增加大量運行的時間。 – Abi
你必須解釋數據是如何加載的,通常雖然增加一個df迭代是昂貴的 – EdChum