我现在正在使用python数据帧来解决一些问题。我有一列有很长的数字列表,范围从1-5。例如,该列包含值(3.6,2.1,4.7,3.8,1.9等等)。我想要做的是将每个数字四舍五入到最接近的HALF数字(不是最接近的整数)。
我想要做的是创建一个新列,它将返回值(3.5,2.0,4.5,4.0,2.0等)。从概念上讲,这非常简单,但我在数据框架中无法做到这一点。
我最初的想法是使用int函数将值四舍五入到最接近的整数。然后我会从中减去我的初始值。然后,根据返回的值,我将确定如何舍入每个值。然而到目前为止,我一直没有成功。
我一直遇到以下错误,例如:“无法将系列转换为”
答案 0 :(得分:2)
您可以使用round
和一点算术来获得所需的结果:
round(num*2)/2
会将数字四舍五入到最近的0.5
。
以下是将其应用于数据框的方法:
>>> df = pd.DataFrame(data={'col1': [3.6, 2.1, 4.7, 3.8, 1.9]})
>>> df
col1
0 3.6
1 2.1
2 4.7
3 3.8
4 1.9
>>> df['col2'] = df.col1.mul(2).round().div(2)
>>> df
col1 col2
0 3.6 3.5
1 2.1 2.0
2 4.7 4.5
3 3.8 4.0
4 1.9 2.0