python错误:ValueError:float()的文本无效:0,69
“我必须将对象列表['Dev']的格式更改为float64,但python向我发送了此错误。'Dev'是csv表('prueba.csv')中的一列对象,我需要将其转换为创建统计信息/指标,您能帮我吗?” #启动代码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
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没有问题的朋友!请将此答案标记为“已接受”,以便其他人也可以查看它。