Зациклить координаты в строку повторяется len (x) раз - PullRequest
0 голосов
/ 25 мая 2018

У меня есть DataFrame, заполненный координатами lat и lng, например:

     lat        lng
0   -33.859485  151.208584
1   -33.868370  151.207141
2   -33.861735  151.210873

Googlemaps использует следующую строку для размещения маркеров на карте, которую я назову new_marker:

new_marker = '&markers=size:mid%7Ccolor:0x0000b3%7Clabel:G%7C'+str(lat)+'+'+str(lng)

Как создать цикл, который создает строку, в которой new_marker повторяется x раз (x в данном случае - число координат в кадре данных), причем каждый повтор имеет соответствующие lat и lng введено с фрейма данных?

По сути, я хотел бы иметь возможность генерировать что-то вроде этого:

'&markers=size:mid%7Ccolor:0x0000b3%7Clabel:G%7C+lat0+lng0&markers=size:mid%7Ccolor:0x0000b3%7Clabel:G%7C+lat1_lng1&markers=size:mid%7Ccolor:0x0000b3%7Clabel:G%7C+lat2+lng2'

Мой опыт работы с forи def очень ограничен.

1 Ответ

0 голосов
/ 25 мая 2018

Строка, соответствующая каждому значению lat и lng, может быть легко создана с помощью панд , применяется метод в сочетании с форматированием строки .

Первым шагом является определение функции, которая задает строку, генерирует желаемую строку:

def coord_formatter(row):
    return '&markers=size:mid%7Ccolor:0x0000b3%7Clabel:G%7C{:.6f}+{:.6f}'.format(row['lat'],row['lng'])

Это в основном заменяет row['lat'] на позицию в строке, где есть {:.6f}, отформатированный как 6 десятичных знаков с плавающей точкой, и lng ко второму.

Затем можно создать новый столбец:

df['string'] = df.apply(coord_formatter,axis=1)
# Output df
#          lat         lng                                             string
# 0 -33.859485  151.208584  &markers=size:mid%7Ccolor:0x0000b3%7Clabel:G%7...
# 1 -33.868370  151.207141  &markers=size:mid%7Ccolor:0x0000b3%7Clabel:G%7...
# 2 -33.861735  151.210873  &markers=size:mid%7Ccolor:0x0000b3%7Clabel:G%7...

Или создать одну строку:

output = '\n'.join(df.apply(coord_formatter,axis=1))
# print(output) produces
# &markers=size:mid%7Ccolor:0x0000b3%7Clabel:G%7C-33.859485+151.208584
# &markers=size:mid%7Ccolor:0x0000b3%7Clabel:G%7C-33.868370+151.207141
# &markers=size:mid%7Ccolor:0x0000b3%7Clabel:G%7C-33.861735+151.210873

Теперь каждая строка координат разделена линией разрыва между ними, чтобы иметь одну строку, где все они просто объединены, вместо этого можно использовать ''.join(....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...