Десятичная ошибка округления: numpy пол и ствол c не работают правильно в python при использовании на сериях pandas - PullRequest
0 голосов
/ 13 апреля 2020

Я получаю странное поведение с np.floor и np.trun c, когда я использую pandas dataframes.

Это ожидаемое поведение, которое работает:

np.floor(30.000)
Out[133]: 30.0

Но вы можете видеть, что когда я делаю ряд, он неправильно обрабатывает «плавающие целые числа» и округляет их на единицу. Я использовал временное исправление добавления 0,00001 ко всему моему фрейму данных, что в моем случае хорошо из-за уровня, на который я округляюсь, но я хотел бы знать, что происходит и как это сделать правильно.

Редактировать: мне особенно нужна функция округления до нуля.

sample_series

2020-01-01 00:00:00    26.750
2020-01-01 01:00:00    27.500
2020-01-01 02:00:00    28.250
2020-01-01 03:00:00    30.000
2020-01-01 04:00:00    30.625
2020-01-01 05:00:00    31.000
2020-01-01 06:00:00    33.375
2020-01-01 07:00:00    33.750
2020-01-01 08:00:00    34.000

In: sample_series.apply(np.float)
Out:

2020-01-01 00:00:00    26.0
2020-01-01 01:00:00    27.0
2020-01-01 02:00:00    28.0
2020-01-01 03:00:00    29.0
2020-01-01 04:00:00    30.0
2020-01-01 05:00:00    30.0
2020-01-01 06:00:00    33.0
2020-01-01 07:00:00    33.0
2020-01-01 08:00:00    33.0
2020-01-01 09:00:00    33.0
2020-01-01 10:00:00    34.0

1 Ответ

0 голосов
/ 13 апреля 2020

Вы можете использовать around() функцию

np.around([0.37, 1.64], decimals=1)
array([0.4,  1.6])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...