我有一个名为'ft_List的列表,看起来像......
[['Fall2001', '22.00', '2000', '01', '01', '120.0', '', 'N'],
[CgeCam2002', '20.00', '2000', '09', '04', '0.0', '1', ''],
['Fall2004', '18.50', '2001', '18', '01', '', '', 'Y']........
...如何将第5列转换为浮点数?我试过了
for i in ft_Rec:
ms = i[5].split(',')
float(ms)
但是
TypeError:float()参数必须是字符串或数字
。我以为这是一根绳子? 是因为有些字段是空的('')吗?我想用这个专栏进行一些计算
答案 0 :(得分:3)
您不需要拆分此输入,它已经是一个列表,只需检查空字符串:
for i in ft_Rec:
if i[5]: print float(i[5])
获得总数:
total = sum( float(i[5]) for i in ft_Rec if i[5] )
答案 1 :(得分:1)
>>> ft_List = [['Fall2001', '22.00', '2000', '01', '01', '120.0', '', 'N'],
['CgeCam2002', '20.00', '2000', '09', '04', '0.0', '1', ''],
['Fall2004', '18.50', '2001', '18', '01', '', '', 'Y']]
>>> for i in ft_List:
i[5] = float(i[5] or 0) # empty string logical ors to 0
>>> ft_List
[['Fall2001', '22.00', '2000', '01', '01', 120.0, '', 'N'], ['CgeCam2002', '20.00', '2000', '09', '04', 0.0, '1', ''], ['Fall2004', '18.50', '2001', '18', '01', 0.0, '', 'Y']]
问题是:
>>> float('')
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
float('')
ValueError: could not convert string to float:
这个解决方案只是使用Python中的空内置对象评估为False
的事实>>> '' or 0
0
答案 2 :(得分:0)
>>> for row in ll:
... f = float(row[5]) if row[5] else 0.
... print f
...
120.0
0.0
0.0
其中ll
是:
>>> ll = [['Fall2001', '22.00', '2000', '01', '01', '120.0', '', 'N'],
['CgeCam2002', '20.00', '2000', '09', '04', '0.0', '1', ''],
['Fall2004', '18.50', '2001', '18', '01', '', '', 'Y']]
我正在为空字符串0.0
''
答案 3 :(得分:-1)
python不接受空字符串作为浮点数的参数。
>>>float(' ')
>>>ValueError: could not convert string to float: