我有一个填充了lat和lng坐标的DataFrame,如下所示:
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
的体验非常有限。
答案 0 :(得分:0)
使用pandas apply method和string formatting可以轻松创建与每个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(...
可以用来代替。