Как правильно добавить pandas timedelta в pandas datetime?

#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 чтобы получить лучшее приближение к тому, что вы считаете истинной ценностью.