擅长:python、mysql、java
<p>“我需要如何设置for循环?”这个问题的正确答案是:你不需要<code>pandas</code>数据帧不用于在其行上循环。您需要做的是在dataframe中创建两个新列,一个用于计算距离,另一个用于以所需格式存储名称:</p>
<pre><code>eScooterVOI['dist'] = eScooterVOI.apply(lambda x: haversine(lon1, lat1, x['lon'], x['lat']), axis=1)
eScooterVOI['name'] = eScooterVOI['lon'].astype(str) + ',' + eScooterVOI['lat'].astype(str)
</code></pre>
<p>然后,要获得仅包含距离小于半径的坐标名称的列表,请使用:</p>
<pre><code>insideRadius = list(eScooterVOI[eScooterVOI['dist'] <= radius]['name'])
</code></pre>
<p>顺便说一句:<code>haversine</code>函数的构建方式是它接收一个<code>pandas</code>序列而不是一个值,通过这种方式,它的实现速度可能比使用<code>df.apply</code>要快得多,但这需要更改一些不在这里讨论的代码</p>