如何将表示为字符串的数字转换为浮点数

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()) 直接转换列,我会得到“无法将系列转换为 ”。

以上是关于如何将表示为字符串的数字转换为浮点数的主要内容,如果未能解决你的问题,请参考以下文章

java语言将任意一个十进制数数字转换为二进制形式,并输出转换后的结果

unity 3d-大分数数字变成指数 C# [关闭]

javascript中如何将获得的整型数值转换为字节数组

将整数转换为新的浮点格式

如何将(四舍五入)浮点数数组更改为字符串数组python

如何将数字中的字节转换为字符串? (数字的字符表示)