微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在vandas数据帧中将vincenty距离转换为float

我有分析vincenty距离的问题,因为格式是对象并且在那里有km度量,我想进一步分析.我想将vincenty距离转换为浮动格式

这是数据

customer_id lat_free    long_free   lat_device  long_device radius      timestamp
7509        -6.283468   106.857636  -7.802388   110.368660  1264.000000 2017-12-14 21:18:40.327
7509        -6.283468   106.857636  -7.804296   110.367192  14.000000   2017-12-15 20:02:21.923

这是我的代码

from geopy.distance import vincenty
df['vincenty_distance'] = df.apply(lambda x: vincenty((x['lat_free'], x['long_free']), (x['lat_device'], x['long_device'])), axis = 1)

这是结果

customer_id lat_free    long_free   lat_device  long_device radius      timestamp                 vincenty_distance
7509        -6.283468   106.857636  -7.802388   110.368660  1264.000000 2017-12-14 21:18:40.327   422.7123873310482 km
7509        -6.283468   106.857636  -7.804296   110.367192  14.000000   2017-12-15 20:02:21.923   422.64674499172787 km

我需要将vincenty_distance转换为float

解决方法:

最好的是添加.km:

df['vincenty_distance'] = df.apply(lambda x: vincenty((x['lat_free'], x['long_free']), (x['lat_device'], x['long_device'])).km, axis = 1)

或者在处理后使用 – 转换为字符串,删除最后一个字母并转换为浮点数:

df['vincenty_distance'] = df['vincenty_distance'].astype(str).str[:-3].astype(float)
print (df)
   customer_id  lat_free   long_free  lat_device  long_device  radius  \
0         7509 -6.283468  106.857636   -7.802388   110.368660  1264.0   
1         7509 -6.283468  106.857636   -7.804296   110.367192    14.0   

                 timestamp  vincenty_distance  
0  2017-12-14 21:18:40.327         422.712361  
1  2017-12-15 20:02:21.923         422.646709  

print (df.dtypes)

customer_id            int64
lat_free             float64
long_free            float64
lat_device           float64
long_device          float64
radius               float64
timestamp             object
vincenty_distance    float64
dtype: object

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐