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

2024-09-28 21:50:27 发布

您现在位置: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,但它打印出1。我不需要print函数中的格式,但是m变量本身的值是1.2。谢谢!你知道吗


Tags: 数据lambda代码index整数浮点resetapply
1条回答
网友
1楼 · 发布于 2024-09-28 21:50:27

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

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

它改变了解释器的行为并使其与python3兼容(在这方面)

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

相关问题 更多 >