#python #pandas #timedelta
Вопрос:
Здравствуйте У меня следующая проблема при добавлении pd.to_timedelta
в pd.to_datetime
объект.
Поэтому, когда я использую:
from datetime import timedelta
seconds_per_datapoint = 0.001024
staticDate
pd.to_datetime(staticDate) timedelta(seconds=(63966 * seconds_per_datapoint))
pd.to_datetime(staticDate) pd.to_timedelta((63966 * seconds_per_datapoint), unit='s')
Я получаю следующее:
numpy.datetime64('2021-08-09T10:03:02.000000')
Timestamp('2021-08-09 10:04:07.501184')
Timestamp('2021-08-09 10:04:07.501183999')
Ожидаемый результат таков 2021-08-09 10:04:07.501184
Я считаю, что это вызвано каким-то переполнением.
Я не могу использовать timedelta при работе с pd.Series, поэтому как правильно добавить timedelta в объект pd.datetime?
Использование Панд 1.1.5
Редактировать:
При изменении единицы измерения на » нас » и изменении расчета это, кажется, решает проблему, но мне не нравится этот метод.
pd.to_datetime(staticDate) pd.to_timedelta(63966 * seconds_per_datapoint * 1e6, unit='us')
Комментарии:
1. Разница между фактическим значением и ожидаемым значением, о котором вы сообщаете, составляет 1-9 секунд.
pandas
Дата-время-это 64-разрядная величина с плавающей запятой, и эта разница находится на границе того, что может представлять 64-разрядная точка с плавающей запятой. Величина не является суммой степеней 2, поэтому она не может быть точно представлена физически.2. @BoarGules Привет, спасибо за ваш комментарий. Ожидаемое значение 1e-6 секунд (чем короче), и это должно быть нормально? У меня было около 1 миллиона строк данных, и я обнаружил, что некоторые строки имеют эту проблему при вычислении с помощью timedelta.
3. Я не могу сказать вам, что все будет хорошо , потому что я не знаю, для чего вы будете использовать ценность. Я могу сказать вам, что вы найдете это где-то между трудным и невозможным,
pandas
чтобы получить лучшее приближение к тому, что вы считаете истинной ценностью.