猿问

Python轮不返回整数

我编写了以下代码来四舍五入数据帧中的浮动值 a


a = pd.DataFrame([[1.2,3.4],[1.4,4.6]])

a = a.apply(round)

但我得到的输出如下:


    0   1

0   1.0 3.0

1   1.0 5.0

为什么函数返回四舍五入的浮点值而不是整数?


此外,在应用如下时,行为是不同的:


round(0.5)

>>0

x= [1.4,2.5,3.6]

list(map(round,x))


>>[1, 2, 4]

为什么会出现这种异常?


慕码人8056858
浏览 177回答 2
2回答

萧十郎

applyround连续调用每一列上的函数。DataFrame 列是Series对象,这些__round__列上定义了一个dunder 方法,其行为略有不同。这实际上是round调用Series.round(a[0])0    1.01    1.0Name: 0, dtype: float64# Same as,a[0].__round__()0    1.01    1.0Name: 0, dtype: float64将此与 Pythonround在标量上的典型行为进行对比:round(1.5)# 2 # Same as,(1.5).__round__()# 2如果您想要相同的行为,请使用applymap.a.applymap(round)   0  10  1  31  1  5这适用round于每个元素(标量),向下取整为整数。或者,我推荐的解决方案,a.round().astype(int)   0  10  1  31  1  5请注意,这不会对包含缺失数据 (NaN) 的列进行类型转换。

交互式爱情

a = a.apply(round).astype(dtype=np.int64)只需使用它astype即可将您float的integer.
随时随地看视频慕课网APP

相关分类

Python
我要回答