【发布时间】:2016-06-28 04:14:30
【问题描述】:
我有一个“x : y”形式的数据列表,我正在尝试将其转换为浮点数 x/y。下面是我的代码
def ratio_to_float (ratio):
[numer,denum] = ratio.split(" : ")
if int(denum) == 0:
num = math.inf
else:
num = int(numer)/int(denum)
return num
但是,我不断收到以下错误
[numer,denum] = ratio.split(" : ")ValueError: 没有足够的值来解包(预期 2,得到 1)
但是,我上次检查时,列表仍然是“x : y”的形式。有人可以告诉我代码的哪一部分导致了这个错误吗?任何帮助表示赞赏。 (:
编辑:我实际上有一个来自 pandas 库的 Series 类型对象,其中包含这些比率的字符串。我的输入是 lst.map(ratio_to_float, na_action = "ignore")。
我也在前 5 个条目上进行了尝试,它们似乎运行良好。
【问题讨论】:
-
在该行之前执行
print(ratio.split(" : "))以查看其实际内容。 -
即使你解决了拆分问题,你也不想做
num = int(numer)/int(denum),因为这将强制整数除法,而不是给你一个浮点答案。你想要float(numer)/float(denum) -
@gariepy:问题标记为 Python-3.x,因此使用
/运算符时整数除法不是问题。 -
@gariepy 如果 OP 已为 Python 3.x 正确标记 - 即使
int(number) / int(denum)将导致浮动结果... -
@GuoXianYau:你得到的是实际的字符串
'x'和'y',还是只是一些数字的简写?我希望这会导致一组完全不同的异常,但不是你描述的那个。
标签: python python-3.x