Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中应用函数后如何将数据类型从integer更改为float_Python - Fatal编程技术网

在python中应用函数后如何将数据类型从integer更改为float

在python中应用函数后如何将数据类型从integer更改为float,python,Python,我的问题是当我试图运行以下代码时: gradePF=gradesAll.groupby('clid').apply(lambda x: (sum(x['PF'] == 0) / sum(x['PF'] == 1)) ).reset_index() 由于PF中的数据实际上是整数,因此结果仍然是整数。我想将结果指定为2位浮点,我尝试了十进制,但它似乎不起作用。有什么想法吗?谢谢 更新: 让我这样说吧。举个很简单的例子, m=sum([1,2,3])/sum([2,3])我希望结果为1.2,

我的问题是当我试图运行以下代码时:

gradePF=gradesAll.groupby('clid').apply(lambda x:
    (sum(x['PF'] == 0) / sum(x['PF'] == 1))
).reset_index()
由于PF中的数据实际上是整数,因此结果仍然是整数。我想将结果指定为2位浮点,我尝试了十进制,但它似乎不起作用。有什么想法吗?谢谢

更新:

让我这样说吧。举个很简单的例子,
m=sum([1,2,3])/sum([2,3])
我希望结果为1.2,但它打印出1。我不需要
print
函数中的格式,但是
m
变量本身的值为1.2。谢谢

我假设您使用的是python 2。默认情况下不进行整数除法

Python 2.7.8 (default, Aug  3 2014, 12:51:13) 
[GCC 4.2.1 Compatible FreeBSD Clang 3.4.1 (tags/RELEASE_34/dot1-final 208032)] on freebsd10
Type "help", "copyright", "credits" or "license" for more information.
>>> 1/2
0
>>> 1/3
0
>>> 4/2
2
>>> 5/2
2
>>> m=sum([1,2,3])/sum([2,3])
>>> m
1
您可以显式地转换为float

>>> 2/float(3)
0.6666666666666666
或者在模块顶部使用以下内容:

from __future__ import division
它改变了解释器的行为并使其与Python 3兼容(在这方面)


在代码中的两个位置对比较结果求和:
sum(x['PF']==0)
。这应该会给出错误
TypeError:“bool”对象不可编辑
hi@AndrewJohnson它实际上可以工作。它可能对某些输入有效,但这可能是因为该代码从未执行过。@MYjx如果该代码被执行,它将解析为
(sum(True)/sum(False))
(布尔值可能不同。您不能
sum
布尔值,因为它不可编辑(正如@andrewjohnson所指出的)。该代码段无法执行。如果您将其括在括号中,如
sum([x['PF']==0]),则该代码段将有效)
。True和False都有整数表示,在执行此代码时将使用整数表示。另一件事是,您知道如何关闭此除法吗?它会在以后将结果弄乱@RolandSmith@MYjx“接近”是什么意思?我不明白。很抱歉造成混淆。我后来发现并不是因为这一行弄乱了我的结果。但我仍然有点好奇,这个模块如何能够指定浮点的位数?thx!@RolandSmithPython内部使用二进制数。这可以给你大约最多16位十进制数字(见上面的1/3)。如果要打印浮点,可以使用例如
str.format
来决定数字的外观。
Python 2.7.8 (default, Aug  3 2014, 12:51:13) 
[GCC 4.2.1 Compatible FreeBSD Clang 3.4.1 (tags/RELEASE_34/dot1-final 208032)] on freebsd10
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import division
>>> 1/2
0.5
>>> 1/3
0.3333333333333333
>>> 4/2
2.0
>>> m=sum([1,2,3])/sum([2,3])
>>> m
1.2