加载CSV文件,形成一定的计算结果并加载到不同的fi

2024-10-17 06:13:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还比较陌生,所以如果我问的问题太蠢,我很抱歉

我有一个CSV文件,有以下列:“CarNumber”,“DateTime”,“GPS”,“Speed”。 GPS列包含以下形式的信息:“纬度:经度”

我想:

1)加载CSV文件

2)将GPS列拆分为经纬度列

3)利用哈弗斯公式计算已知经纬度两点之间的距离。到目前为止,我提出了以下函数:

def distRad(glat1, glng1, glat2, glng2):
    from math import sin, cos, sqrt, atan2, radians, asin
    # approximate radius of earth in km
    R = 6371.0
    lat1 = radians(glat1)
    lng1 = radians(glng1)
    lat2 = radians(glat2)
    lng2 = radians(glng2)
    dlng = lng2 - lng1
    dlat = lat2 - lat1
    #a = 2 * asin((sin(dlng/2)**2+cos(lng1)*cos(lng2)*sin(dlat/2)**2)**0.5)
    #c = a
    a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlng / 2)**2
    c = 2 * atan2(sqrt(a), sqrt(1 - a))
    return R * c

4)将结果上载到新的csv文件,其中列为:“CarNumber”、“DateTime”、“Latitude”、“Longitude”、“Distance” 我知道这听起来很简单,但我仍然需要指导

我的CSV文件的一部分:

CarNumber;DateTime;GPS;Speed
230;04.06.2019 0:00:12;87,96978 : 159,588606;20

谢谢你!你知道吗


Tags: 文件csvdatetimesqrtsincosgpsradians
2条回答
  1. 将csv加载到数据帧-

    数据框=pd.read\U csv文件('数据.csv“,分隔符=”,“)

  2. 假设lat和long之间有:

    df[lat],df['long']=df['GPS']。结构拆分(':',1).str

  3. 使用python中的haversine包应用haversine公式

    从haversine进口haversine

    df['Distance'] = haversine()
    
    1. 要将其上传到csv,您可以使用

    你知道吗数据框到\u csv('检查.csv“,sep=”,“,encoding='utf-8')

请注意,这些只是指针,我没有测试代码,但这应该让你开始。你知道吗

编辑:

要遍历数据集,可以执行以下操作

import copy
def read_csv(filepath, has_header=False):
    with open(filepath, 'r') as file:
        reader = csv.reader(file)
        data = list(reader)
        header = None
        if has_header:
            header = data[0]
            data = data[1:]


    file.close()
    return data, header

codes_dict = {}
data, header = read_csv("data/your_csv.csv", has_header=True)

for row in data:

# iterate and create the map having lat long in codes_dict

我只建议使用pandas库并使用read-csv()函数。你知道吗

import pandas as pd 
df = pd.read_csv(‘nameofcsv.csv’)
print(df)

此处计算

pd.to_csv(‘savename.csv’)

相关问题 更多 >