![](/img/trans.png)
[英]How do I fix “ValueError: could not convert string to float” when running regression from Pandas Dataframe?
[英]How do I convert vincenty distance to float in pandas dataframe
我有分析vincenty距离的问题,因为格式是object
并且在那里有km
度量,我想进一步分析。 我想将vincenty距离转换为float
格式
这是数据
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)
或者在处理后使用 - 转换为string
,删除最后一个字母并转换为float
:
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
您可以使用str.replace
删除“km”并使用apply
将float设置为系列。
例如:
df["Vincenty_distance"] = df["Vincenty_distance"].str.replace(" km", "").apply(float)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.