【问题标题】:Python : ValueError: could not convert string to float: '1,086'Python:ValueError:无法将字符串转换为浮点数:'1,086'
【发布时间】:2021-12-31 03:21:25
【问题描述】:

通过查看这个分步教程网站,我一直在学习如何制作预测模型:https://towardsdatascience.com/step-by-step-guide-building-a-prediction-model-in-python-ac441e8b9e8b

我使用的数据是秘鲁从去年 1 月到今年 9 月的 Covid-19 病例,我想利用这些数据预测从今年 10 月到 12 月的死亡病例。 但是,“New Cases”数据类型不能转换为浮点数。所以,我添加了这个:

df = df.replace(r'^\s*$', np.nan, regex=True) 但它也不起作用......我该怎么办?

df = df[['Date', 'New Cases']]
df.head()

df = df.replace(r'^\s*$', np.nan, regex=True)
df = df.astype({"New Cases": float})
df["Date"] = pd.to_datetime(df.Date, format="%Y/%m/%d")
df.dtypes
df.index = df['Date']
plt.plot(df["New Cases"],label='2020/1/1~2021/9/30 New Cases')`

【问题讨论】:

  • 使用小数点'.'而不是逗号','。如果数据来自外部来源,请替换。

标签: python string floating-point prediction


【解决方案1】:

这里可能存在两个问题之一,但有必要查看您正在加载的文件以及用于导入它的代码以确定。正如错误消息所述,Python 无法将字符串 1,086 转换为浮点数,因为逗号不应出现在 Python 中的数字中。在 Python 之外,根据国家/地区的不同,逗号可以是千位分隔符(换句话说,该数字应为 1086)或小数点(即,该数字应为 1 + 86/1000)。 Python 总是使用句点. 作为小数点,并且通常没有千位分隔符(虽然从技术上讲,您可以使用_,但它并不常见)。

假设您使用pandas.read_csv 来加载此文件,那么这两个问题都有解决方案。如果逗号表示千位分隔符,您可以将参数thousands="," 添加到pandas.read_csv 的参数列表中,它会为您删除它们。如果逗号表示小数位,您可以改为添加参数decimal=",",它会将所有逗号转换为句点,然后再尝试将它们转换为数字。

【讨论】:

    猜你喜欢
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    相关资源
    最近更新 更多