【问题标题】:Loop coordinates into string repeated len(x) times将坐标循环成重复 len(x) 次的字符串
【发布时间】:2018-05-25 13:57:24
【问题描述】:

我有一个填充了 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 在这种情况下是数据框中的坐标数),每个重复都有各自的latlng 从数据框输入?

实际上,我希望能够生成这样的东西:

'&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'

我对@9​​87654329@ 和def 的体验非常有限。

【问题讨论】:

  • 您要创建一个新列,其中包含 lat 和 lng 的相应字符串吗?还是一个包含所有坐标的字符串?
  • 单个字符串,使用下面的第二种方法回答。

标签: python pandas loops dataframe


【解决方案1】:

每个 lat 和 lng 对应的字符串可以通过 pandas apply method 结合 string formatting 轻松创建。

第一步是定义给定行的函数,生成所需的字符串:

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(... 可以代替。

【讨论】:

    猜你喜欢
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    相关资源
    最近更新 更多