перебирать переменные в списке и назначать имя переменной как имя столбца строки в pandas - PullRequest
0 голосов
/ 02 октября 2019

Каждая x_poly представляет многоугольник, содержащий связку координат

polys = [gangnam_poly, mapo_poly, jamsil_poly, sungsoo_poly, pangyo_poly]

У меня есть координаты, где я хочу найти, где он находится, т.е. если он находится внутри одного из многоугольников.

Iиметь фрейм данных, который выглядит следующим образом:

    id  title       count   pt
0   1   place1      1864    POINT (167.036077 31.490958)
1   2   place2      6466    POINT (147.03103 33.491231)
2   3   place3      4652    POINT (117.030428 37.4925)

Следуя Назначить имена переменных и данные в цикле метод Если я делаю это в словаре вместо фрейма данных для простоты:

polys = [gangnam_poly, mapo_poly, jamsil_poly, sungsoo_poly, pangyo_poly]
data={}
for p in polys:
    data[str(p)] = 1
print(data)

вывод:

{'POLYGON ((127.03302 37.53461, 127.05259 37.52834, 127.06658 37.52084, 127.0752 37.49484, 127.06503 37.49213, 127.02748 37.46701, 127.00611 37.49668, 127.01534 37.50047, 127.01405 37.51698, 127.0186 37.52776, 127.02375 37.53109, 127.03302 37.53461))': 1,
 'POLYGON ((126.87833 37.5917, 126.93772 37.5823, 126.95755 37.57426, 126.93554 37.54098, 126.91026 37.54288, 126.844 37.58539, 126.87833 37.5917))': 1

Вместо полигона, хранящегося в нем, я хочу использовать его имя. поэтому

Желаемый вывод: {gangnam_poly: 1, mapo_poly: 1 и т. д.}}

Редактировать: Мое решение: Я имеюудалось сделать это путем создания другого списка с именами, который будет утомительным, так как список становится длиннее, поэтому должен быть более эффективный метод. До тех пор я застрял с этим.

polys = [gangnam_poly, mapo_poly, jamsil_poly, sungsoo_poly, pangyo_poly]
names = ["gangnam", "mapo", "jamsil", "sungsoo", "pangyo"]

for polygon,n in zip(polys, names):
    nodes_df[n] = nodes_df.pt.apply(lambda p: polygon.intersects(p))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...