在arcsin中遇到无效的值[RuntimeWarning]

时间:2019-06-06 09:31:55

标签: python excel pandas

我有一个很大的数据文件,我想用给定的纬度和经度值计算距离。但是,仅某些输入文件会遇到以下问题。

RuntimeWarning: invalid value encountered in arcsin
      return earth_radius *2 * np.arcsin(np.sqrt(a))

如果将以下代码行添加到程序中,则可以解决该问题。但是,我不希望在 Drive Mode 中删除包含null的数据。我该怎么做才能克服这种问题?

distdura = distdura.replace(0, np.nan)
distdura = distdura[distdura['Drive Mode'].notnull()]

以下显示了我的程序。

distdura = pd.read_csv(folderdir)

distdura = distdura.sort_values(by = ['AV_ID','timestamp'])
distdura['dist'] = np.concatenate(distdura.groupby(["AV_ID"]).apply(lambda x:haversine(x['Latitude'],x['Longitude'],x['Latitude'].shift(),x['Longitude'].shift())).values)
distdura = distdura[distdura["dist"] < 1]
distdura = distdura[distdura["dist"] > -0.99]

以下是我在上面的代码中使用的Haversine函数。

def haversine(lat1, lon1, lat2, lon2, to_radians = True, earth_radius = 6371):                      
    if to_radians:
        lat1,lon1,lat2,lon2 = np.radians([lat1,lon1,lat2,lon2])

    a = np.sin((lat2-lat1)/2.0)**2 + np.cos(lat1) * np.cos(lat2) * np.sin((lon2-lon1)/2.0)**2

    return earth_radius *2 * np.arcsin(np.sqrt(a))

如下所示显示不起作用的示例数据。 Sample Data

0 个答案:

没有答案