将测地数据类型更改为整数

2024-10-01 00:23:59 发布

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

有了这段代码,我想创建一个距离矩阵,这是可行的!我使用了geopy软件包,并使用测地距离方法来计算存储在数据帧中的坐标之间的距离

def get_distance(col):
    end = RD1.loc[col.name, 'Eindlocatie_Coord']
    return RD1['Eindlocatie_Coord'].apply(geodesic, args=(end,), ellipsoid='WGS-84')

def get_totaldistance(matrix):
    square = pd.DataFrame(np.zeros(len(RD1)**2).reshape(len(RD1), len(RD1)), index=RD1.index, columns=RD1.index)
    distances = square.apply(get_distance, axis=1).T
    totaldist = np.diag(distances,k=1).sum()
    return totaldist

distances = get_totaldistance(RD1)

但是,这些距离是在一个测地数据类型中,我希望这些距离是浮动的,因为这将使我的进一步计算更容易

我知道print(geodesic(newport_ri, cleveland_oh).miles)(来自geopy documentation的一个示例)将返回float,但我不确定如何将其应用于整个pandas数据帧列

那么,如何更改代码以返回浮点数呢


Tags: 数据代码距离getindexlendefcol
2条回答

我在函数中增加了一个子函数来更改输出,这正是我想要的。以下是解决方案:

def get_distance(col):
    end = RD1.loc[col.name, 'Eindlocatie_Coord']
    return RD1['Eindlocatie_Coord'].apply(geodesic, args=(end,), ellipsoid='WGS-84')

def get_totaldistance(matrix):
    square = pd.DataFrame(np.zeros(len(RD1)**2).reshape(len(RD1), len(RD1)), index=RD1.index, columns=RD1.index)
    distances = square.apply(get_distance, axis=1).T
    
    def units(input_instance):
        return input_instance.km
    
    distances_km = distances.applymap(units)
    
    totaldist = np.diag(distances_km,k=1).sum()
    return totaldist

其中函数def units(input_instance)是我的问题的解决方案

您可以使用map()将函数应用于数据帧列:

df['distance'] = df['distance'].map(lambda x: geodesic(x,other_distance).miles)

根据您的版本修改它

相关问题 更多 >