python错误:ValueError:float()的文本无效:0,69

python错误:ValueError:float()的文本无效:0,69,python,csv,floating-point,jupyter,Python,Csv,Floating Point,Jupyter,“我必须将对象列表['Dev']的格式更改为float64,但python向我发送了此错误。'Dev'是csv表('prueba.csv')中的一列对象,我需要将其转换为创建统计信息/指标,您能帮我吗?” #启动代码 import pandas as pd import numpy as np #从.csv文件中读取数据 df = pd.read_csv('prueba.csv', sep=';', decimal=',',encoding='ISO-8859-1') #数据描述 df.dt

“我必须将对象列表['Dev']的格式更改为float64,但python向我发送了此错误。'Dev'是csv表('prueba.csv')中的一列对象,我需要将其转换为创建统计信息/指标,您能帮我吗?”

#启动代码

import pandas as pd
import numpy as np
#从.csv文件中读取数据

df = pd.read_csv('prueba.csv', sep=';', decimal=',',encoding='ISO-8859-1')
#数据描述

df.dtypes

Element      object
Property     object
Nominal     float64
Actual       object
Tol -       float64
Tol +       float64
Dev          object
Check       float64
Out         float64
dtype: object
#浮动翻译列表

df['Dev']
0        0,69
1        0,62
2        0,54
3        0,47
4        0,19
5       -0,26
6        0,11
7         0,1
8         0,2
9        0,29
10      -1,54
11         -2
12      -2,06
13      -2,02
14      -2,08
15      -1,39
16      -1,68
17      -1,91
18      -1,78
19       -1,8
20      -1,21
21      -1,07
22      -0,97
23      -1,47
24      -1,35
25      -0,91
26      -1,17
27      -0,67
28      -1,12
29      -1,13
1962        0
1963    -0,37
1964     0,02
1965     0,32
1966     0,04
1967        0
1968     0,39
1969     0,25
1970     0,38
1971     0,15
1972        0
1973     1,11
1974    -1,13
1975     0,15
1976     0,12
1977        0
1978    -0,47
1979    -0,85
1980     0,08
1981     0,23
1982        0
1983     1,03
1984    -0,76
1985    -0,03
1986     0,02
1987        0
1988     0,36
1989    -1,45
1990     0,12
1991     0,09
Name: Dev, Length: 1992, dtype: object
#用于转换的函数定义

def convert_currency(val):
    """
     - Remove commas and u'
     - Convert to float type
    """
    new_val = val.replace("u'","'")
    return float(new_val)

df['Dev'].apply(convert_currency)
#Python错误

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-93-9ac4450806f7> in <module>()
----> 1 df['Dev'].apply(convert_currency)

C:\Users\kaosb\miniconda2\lib\site-packages\pandas\core\series.pyc in apply(self, func, convert_dtype, args, **kwds)
   3589             else:
   3590                 values = self.astype(object).values
-> 3591                 mapped = lib.map_infer(values, f, convert=convert_dtype)
   3592 
   3593         if len(mapped) and isinstance(mapped[0], Series):

pandas/_libs/lib.pyx in pandas._libs.lib.map_infer()

<ipython-input-89-0c43557e37eb> in convert_currency(val)
      5     """
      6     new_val = val.replace("u'","'")
----> 7     return float(new_val)

ValueError: invalid literal for float(): 0,69
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
---->1 df['Dev'].应用(转换为货币)
C:\Users\kaosb\miniconda2\lib\site packages\pandas\core\series.pyc in apply(self、func、convert\u dtype、args、**kwds)
3589其他:
3590值=self.astype(object.values)
->3591 mapped=lib.map\u推断(值,f,convert=convert\u数据类型)
3592
3593如果len(映射)和isinstance(映射[0],系列):
pandas/_libs/lib.pyx在pandas中。_libs.lib.map_infere()
以换算货币(val)表示
5     """
6新值=val.replace(“u'”,“”)
---->7返回浮动(新值)
ValueError:浮点()的文本无效:0,69

在应用浮点之前,您必须用点替换逗号,否则浮点函数会认为您在给参数赋值

在应用浮点之前,您必须用点替换逗号,否则浮点函数会认为您在给参数赋值

看起来您没有替换逗号

def convert_currency(val):
    """
     - Remove commas and u'
     - Convert to float type
    """
    new_val = val.replace("u'","").replace(",",".")
    return float(new_val)
我会成功的


您的浮动需要点而不是像您所说的逗号。

看起来您没有替换逗号

def convert_currency(val):
    """
     - Remove commas and u'
     - Convert to float type
    """
    new_val = val.replace("u'","").replace(",",".")
    return float(new_val)
我会成功的


你的浮点数需要点而不是像你说的逗号。

只需将编码更改为
拉丁字母1

我在本地尝试过,效果很好,它会自动将其数据类型分配为float64。

只需将编码更改为
拉丁语1

我在本地尝试过,效果很好,它会自动将其数据类型分配为float64。

熊猫可能无法识别编码是“西欧”格式。你能用
encoding=latin_1
再试一次吗(这只是西欧编码的另一个别名)pandas可能无法识别编码是“西欧”格式。您可以使用
encoding=latin_1
(这只是西欧编码的另一个别名)再试一次吗?您如何更改编码?可能是这样的?df=pd.read_csv('prueba.csv',sep=';',decimal=',',encoding='latin_1')谢谢!!您如何更改编码?可能是这样?df=pd.read_csv('prueba.csv',sep=';',decimal=',',encoding='latin_1')谢谢!!我尝试过,但是…;ValueError:无法将字符串转换为float:??这意味着是调试的时候了。子句float(new_val)函数带有try和except,如果它抛出错误,打印它并给出一个默认值。这样你可以看到为什么它不起作用。我猜你有一些奇怪的字符没有通过函数谢谢Hagai Kalinhoff没问题的朋友!请将此答案标记为“已接受”,以便其他人也可以查看它。我尝试过,但…;ValueError:可以不将字符串转换为浮点:???这意味着是时候调试了。浮点子句(new_val)函数使用try和except,如果它抛出错误,请打印它并给出默认值。这样,您就可以看到它不起作用的原因。我猜您有一些奇怪的字符没有通过函数。谢谢Hagai Kalinhoff没有问题的朋友!请将此答案标记为“已接受”,以便其他人也可以查看它。