Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用不同数据帧的纬度和经度计算Km_Python_Pandas_Csv_Dataframe_Data Analysis - Fatal编程技术网

Python 使用不同数据帧的纬度和经度计算Km

Python 使用不同数据帧的纬度和经度计算Km,python,pandas,csv,dataframe,data-analysis,Python,Pandas,Csv,Dataframe,Data Analysis,我有4个数据帧(ticket_data.csv、providers.csv、stations.csv和cities.csv) 在stations.csv中,我有两个coll,分别称为o_city(起点城市)和d_city(终点城市)。这两个coll为我提供了需要在cities.csv中查找的城市id 在cities.csv中,我有每个城市的lat和long 如何计算每张车票的o_city和d_city之间的距离?我试着使用pyproj,但我没有找到一种方法使它在每张票上都起作用 csv文件的屏幕

我有4个数据帧(ticket_data.csv、providers.csv、stations.csv和cities.csv)

在stations.csv中,我有两个coll,分别称为o_city(起点城市)和d_city(终点城市)。这两个coll为我提供了需要在cities.csv中查找的城市id

在cities.csv中,我有每个城市的lat和long

如何计算每张车票的o_city和d_city之间的距离?我试着使用pyproj,但我没有找到一种方法使它在每张票上都起作用

csv文件的屏幕截图:


欢迎来到StackOverflow!在您的cities数据框架中,假设在这里它被称为city_df;对于每一行,您可以使用欧几里德几何中称为哈弗森距离公式的东西来计算地球表面上两个坐标对之间的距离。下面是一些虚拟Python3代码的示例,大致介绍了如何实现这一点(仅使用两对坐标以便于通信):

坐标必须采用43.9202中的十进制表示法,而不是43*38“67”表示法。因此,距离的输出值将以公里为单位

希望这能帮助你更接近解决你的问题


另外,您可能需要安装haversine,因为它不在标准库中

您的问题需要一些工作,我建议(a)在您的问题中发布一小部分数据作为实际文本(以便我们可以使用
pd.read_clipboard()
)轻松处理数据。(b)提供您想要的准确输出(如果你不知道数字,至少是精确的格式)和(c)定义你想要使用的距离度量,因为从纬度/长度到以公里为单位的距离并不像欧几里德(也许你想要哈弗斯)那样简单.使用
geopy.distance
获取两个GPS坐标之间的距离。我相信这会对我有所帮助,但我不知道如何定义我的起点和终点lon/lat,我的英语不是很好,因此我将尝试解释我的问题:我的任务是根据火车、公共汽车和卡波获得平均价格差和持续时间取决于行程距离(0-200公里、201-800公里、800-2000公里、2000+公里)每个旅行数据都在ticket_data.csv中,但它没有直接给出它给我的lon和lat以及o_city和d_city的id,我不知道如何说,例如:origin_lon=城市中相应id的lon.csv我的ticket_data.csv的第一行给我o_city=611如何获得对应的变量cities.csv中city 611的lat/lon?您可以读入每个数据帧,然后通过执行类似于ticket_data_df['lat']=cities_df['lat']]的操作,将cities.csv数据帧中的lat/lon列添加到ticket_data.csv数据帧中,并对经度执行相同的操作(假设每个数据帧的长度相同).你可以用这个实现同样的事情:票证数据是74000行,城市只有8000行,我可以有一个数字为12000的城市,城市的id是随机的而不是自动递增的..如果我做票证数据_df['LAT']=城市_df['LAT']611号城市的lat是等于id为611的城市的lat还是等于611行上城市的lat?
from haversine import haversine

distance = haversine((city_df[origin_lat][0], city_df[origin_lon][0]), (city_df[destination_lat][0], city_df[destination_lon][0]))