首页 > 解决方案 > Panda Python 错误:无法将字符串转换为浮点数

问题描述

我无法将我的字符串更改为浮点值。我是 Python 新手,在堆栈溢出方面找不到任何类似的问题。对不起,如果我错过了...

我的数据片段。

在此处输入图像描述

我的代码看起来像这样

  import pandas as pd
  import numpy as np
  data = pd.read_csv('data.csv')

dt = data.rename(columns = {"Unnamed: 0": "test", "Unnamed: 1": "name", "Unnamed: 2": "week"})

dt.dtypes

输出

test           object
name           object
week           object
Total          object
§83            object
§83.1          object
Unnamed: 6     object
Unnamed: 7     object
Unnamed: 8     object
Unnamed: 9     object
Unnamed: 10    object
§83.2          object
Unnamed: 12    object
Unnamed: 13    object
Unnamed: 14    object
Unnamed: 15    object
Unnamed: 16    object
§83a           object
Unnamed: 18    object
Unnamed: 19    object
Unnamed: 20    object
Unnamed: 21    object
Unnamed: 22    object
dtype: object

想改变我在 Col Total 中的字符串以浮动

dt.Total = dt.Total.astype(float)

错误:ValueError: could not convert string to float: 'Total'有关总信息,请参见下文

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-78-ad6ed6a5e004> in <module>
----> 1 dt.Total = dt.Total.astype(float)

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/generic.py in astype(self, dtype, copy, errors)
   5546         else:
   5547             # else, only a single dtype is given
-> 5548             new_data = self._mgr.astype(dtype=dtype, copy=copy, errors=errors,)
   5549             return self._constructor(new_data).__finalize__(self, method="astype")
   5550 

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/internals/managers.py in astype(self, dtype, copy, errors)
    602         self, dtype, copy: bool = False, errors: str = "raise"
    603     ) -> "BlockManager":
--> 604         return self.apply("astype", dtype=dtype, copy=copy, errors=errors)
    605 
    606     def convert(

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/internals/managers.py in apply(self, f, align_keys, **kwargs)
    407                 applied = b.apply(f, **kwargs)
    408             else:
--> 409                 applied = getattr(b, f)(**kwargs)
    410             result_blocks = _extend_blocks(applied, result_blocks)
    411 

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/internals/blocks.py in astype(self, dtype, copy, errors)
    593             vals1d = values.ravel()
    594             try:
--> 595                 values = astype_nansafe(vals1d, dtype, copy=True)
    596             except (ValueError, TypeError):
    597                 # e.g. astype_nansafe can fail on object-dtype of strings

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/dtypes/cast.py in astype_nansafe(arr, dtype, copy, skipna)
    995     if copy or is_object_dtype(arr) or is_object_dtype(dtype):
    996         # Explicit copy, or required since NumPy can't view from / to object.
--> 997         return arr.astype(dtype, copy=True)
    998 
    999     return arr.view(dtype)

ValueError: could not convert string to float: 'Total'

更新: 在此处输入图像描述

在此处输入图像描述

标签: pythonpython-3.xpandasdataframe

解决方案


如果您的任何列包含字符串值(甚至是字母表),python 将在尝试将其转换为floatint时显示错误。TOTAL 列的前两行是字符串。出于这个原因,在尝试将列值转换为浮点数之前,您可能希望删除这些值或将它们替换为一些其他合适的值。


推荐阅读