【发布时间】:2016-01-06 21:05:27
【问题描述】:
我正在尝试导入包含两列位置数据(纬度/经度)的 .csv,计算点之间的距离,将距离写入新列,将函数循环到下一组坐标,然后写入输出数据帧到一个新的 .csv。我写了以下代码,它
import pandas as pd
import numpy as np
pd.read_csv("input.csv")
def dist_from_coordinates(lat1, lon1, lat2, lon2):
R = 6371 # Earth radius in km
#conversion to radians
d_lat = np.radians(lat2-lat1)
d_lon = np.radians(lon2-lon1)
r_lat1 = np.radians(lat1)
r_lat2 = np.radians(lat2)
#haversine formula
a = np.sin(d_lat/2.) **2 + np.cos(r_lat1) * np.cos(r_lat2) * np.sin(d_lon/2.)**2
haversine = 2 * R * np.arcsin(np.sqrt(a))
return haversine
lat1 = row['lat1'] #first row of location.lat column here
lon1 = row['lon1'] #first row of location.long column here
lat2 = row['lat2'] #second row of location.lat column here
lon2 = row['lon2'] #second row of location.long column here
print(dist_from_coordinates(lat1, lon1, lat2, lon2), 'km')
df.to_csv('output.csv')
我收到以下错误:回溯(最近一次通话最后一次): 文件“Test.py”,第 22 行,在 lat1 = row['lat1'] #这里是location.lat列的第一行 NameError:名称“行”未定义
能否就如何成功地循环这个公式通过这些数据提供额外的反馈?
【问题讨论】:
-
请将完整的错误回溯添加到您的问题中。
-
忘记我之前的评论。您是否尝试过打印
line并查看它实际包含的内容?它似乎是一个包含超过您假设的 3 个字段的列表。