如何将表示为字符串的数字转换为浮点数
Posted
技术标签:
【中文标题】如何将表示为字符串的数字转换为浮点数【英文标题】:How to convert a number expressed as a string into float 【发布时间】:2020-12-03 04:22:25 【问题描述】:我正在尝试将带有“4,3”等数字的列转换为浮点数。
数据框:
Int64Index: 19147 个条目,0 到 21491个数据列(共13列):#列 非 Null 计数 Dtype --- ------ -------------- ----- 0 PremiseID 19147 非空 int64 1 PremiseName 19147 非空 对象 2 类别 19147 非空对象 3 区域 19147 非空对象 4 InhabitantsCount 19147 非空 int64 5 DistanceCityCentre 19147 非空 int64 6 FacebookLikes 19147 非空 float64 7 RatingValue 19147 非空 对象 8 RatingCount 19147 非空 int64 9 OpeningSaturday 19147 非空 float64 10 ClosingSaturday 19147 非空 float64 11 DrinkItem 19147 非空 对象 12 价格 19147 非空对象 dtypes: float64(3)、int64(4)、object(6) 内存使用量:2.0+ MB
我试过了:
# Convert data types
conv_dict =
'FacebookLikes': int,
'RatingValue': float,
'Price': int,
df = df.astype(conv_dict)
错误:
ValueError: 无法将字符串转换为浮点数:'4,3'
【问题讨论】:
你必须将逗号替换为点,然后将其转换为浮点数 这能回答你的问题吗? Convert number strings with commas in pandas DataFrame to float 显示输入数据框 【参考方案1】:创建一个新的转换函数来处理这个输入4,3
def float_conv(val):
return float(val.replace(',','.'))
并使用它
conv_dict =
'FacebookLikes': int,
'RatingValue': float_conv,
'Price': int,
【讨论】:
是的,我已经尝试将其作为 df.RatingValue.replace(',', '.') 但没有任何效果。当我按照建议尝试您的解决方案时,我得到“数据类型无法识别”。如果我尝试使用 float(val.replace()) 直接转换列,我会得到“无法将系列转换为以上是关于如何将表示为字符串的数字转换为浮点数的主要内容,如果未能解决你的问题,请参考以下文章