Для ошибки цикла, SettingWithCopyWarning: значение пытается быть установлено для копии среза из DataFrame - PullRequest
0 голосов
/ 25 октября 2018

Я попытался посчитать точки, которые находятся в радиусе 100 метров, с помощью GPS-координат.Мои данные имеют 4 столбца, как показано ниже:

Index     Longitude    Latitude      Count
1         35.897654    26.568987       0
2         32.98717     23.897740       0
3         36.23245     34.243246       0
.          ....         ....          ....
.          ....         ....          ....

Я рассчитал расстояние от координат методом Хаверсайна.Я описал это как функцию.

haversine ([x1, y1], [x2, y2]) дает счетчик между координатами GPS.

Моя проблема возникает в следующем коде;

for x in range(0,25486):
    for y in range(1,25486):
        a = haversine([cr.iloc[x][0],cr.iloc[x][1]],[cr.iloc[y][0],cr.iloc[y][1]])
        if a <= 100 and a > 0:
            cr.iloc[x][2]=cr.iloc[x][2]+1

itвыдает эту ошибку;

main : 5: SettingWithCopyWarning: пытается установить значение для копии среза из DataFrame

См. предупреждения в документации: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

Я проверил документ, но не смог найти что-то полезное или не понял.

Что я делаю не так?Как правильно выполнить операцию с вложенным циклом?

Заранее спасибо.

1 Ответ

0 голосов
/ 27 октября 2018
cr.iloc[x][2]=cr.iloc[x][2]+1

этот код не устанавливает значение в кадре данных

Я изменил на;

for x in range(0,25486):
    t=0
    for y in range(0,25486):
        a = haversine([cr.iloc[x][1],cr.iloc[x][2]],[cr.iloc[y][1],cr.iloc[y][2]])
        if a <= 400 and a > 0:
            t = t+1   
    cr.set_value(x,'Adet',t)
...