Использую следующую функцию:
def round_half_away_from_zero(n, decimals=1):
rounded_abs = round_half_up(abs(n), decimals)
return math.copysign(rounded_abs, n)
def round_half_up(n, decimals=1):
multiplier = 10 ** decimals
return math.floor(n*multiplier + 0.5) / multiplier
def round_half_down(n, decimals=1):
multiplier = 10 ** decimals
return math.ceil(n*multiplier - 0.5) / multiplier
df['temp'] = df3['temp'].apply(lambda x: round_half_away_from_zero(x))
он перемещается, затем обновляется, и весь столбец, за исключением трех записей, действует как предполагается: например:
- 63,5 = 63,5
- 58,355 = 58,4
- 88,878 = 88,9
- 48,75 = 48,8
Как ни странно, только три записи не работают, и они:
- 67,75 = 67,7
- 58,25 = 58,2
- 46,65 = 46,6
Если я просто выполняю функцию для одного значения, оно работает, нонапример, не в серии:
round_half_away_from_zero(67.5)
,
работает и дает 67,8, 58,3 и 46,7 соответственно.
Любые идеи, спасибо