У меня клеточная сетка больших размеров.Каждая ячейка имеет идентификатор (p1
), значение ячейки (p3
) и координаты в фактических мерах (X
, Y
).Вот так выглядят первые 10 строк / ячеек
p1 p2 p3 X Y
0 0 0.0 0.0 0 0
1 1 0.0 0.0 100 0
2 2 0.0 12.0 200 0
3 3 0.0 0.0 300 0
4 4 0.0 70.0 400 0
5 5 0.0 40.0 500 0
6 6 0.0 20.0 600 0
7 7 0.0 0.0 700 0
8 8 0.0 0.0 800 0
9 9 0.0 0.0 900 0
Соседние ячейки ячейки i
в p1
можно определить как (i-500+1
, i-500-1
, i-1
, i+1
, i+500+1
, i+500-1
).Например: p1
из 5 имеет соседей - 4 60 504 505 506.(это идентификатор строк в верхней таблице - p1
).
Я пытаюсь сделать следующее: Для выбранного значения / строки i
в p1
я хотел бы знать всесоседей на выбранном расстоянии от i
и суммируйте все их p3
значения.
Я пытался применить это решение ( ссылка ), но я не знаю, как включитьпараметр расстояния.Значение ячейки может быть взято с помощью df.iloc
, но шаги до этого немного сложны для меня.
Можете ли вы дать мне какой-нибудь совет?
РЕДАКТИРОВАТЬ: Используя решение от Томаса ивызвав df CO
:
p3
0 45
1 580
2 12000
3 12531
4 22456
Я хотел бы добавить еще один столбец и использовать значения из p3
столбцов
CO['new'] = format(sum_neighbors(data, CO['p3']))
Но это не работает.Если я добавлю число вместо ссылки на строку CO['p3']
, это будет работать как шарм.Но как я могу автоматически использовать значения из столбца p3 в функции format
?
РЕШЕНО: Работает с:
CO['new'] = CO.apply(lambda row: sum_neighbors(data, row.p3), axis=1)