Как рассчитать относительную разницу во времени в Pandas?Python

Программы на Python
Ответить
Anonymous
 Как рассчитать относительную разницу во времени в Pandas?

Сообщение Anonymous »

У меня есть столбец даты и времени, и я хочу получить разницу между значениями в годах, месяцах и т. д., а не в дельтах времени, которые предоставляют только дни. Как мне это сделать в Pandas?
Pandas предоставляет DateOffset для относительных дельт, но в документации говорится, что «форма позиционного аргумента относительной дельты не поддерживается», и это форма, которая вычисляет относительную дельту (в отличие от указания относительной дельты).
В этом примере я имею дело только с минимальным и максимальным значением столбца, чтобы получить диапазон, но в конечном итоге я хочу применить это ко всему столбцу.
min_max = df_most_watched['time'].agg(['min', 'max'])

min 2019-06-18 18:22:05.991000+00:00
max 2021-02-15 18:03:02.893000+00:00
Name: time, dtype: datetime64[ns, UTC]

min_max.diff():
min NaT
max 607 days 23:40:56.902000
Name: time, dtype: timedelta64[ns]

Выходные данные должны быть 1 год, 7 месяцев, 27 дней, 23:40:56.902000.
Попытка
Для подтверждения я попробовал pd.DateOffset(low, high) и получил TypeError: аргумент `n` должен быть целым числом, получил
Я попробовал .pct_change() по прихоти, надеясь, что у него будет особый случай для даты и времени, но без игральных костей. TypeError: невозможно выполнить __truediv__ с этим типом индекса: DatetimeArray
Я проверил, есть ли в .diff() какой-то параметр, напримерrelative=True, но нет.
Исследование
В Руководстве пользователя страница временных рядов не имеет ничего релевантного, когда я нажимаю Ctrl+F для «относительного», а страница «Дельты времени» - нет. вообще упоминайте «относительный».
Я проверил, может ли DateOffset иметь какие-либо альтернативные конструкторы, которые могли бы принимать две метки времени, но в документации не упоминаются какие-либо методы, начинающиеся с from или что-либо еще.
Настройка
min_max = pd.Series(
{'min': pd.Timestamp('2019-06-18 18:22:05.991', tz='UTC'),
'max': pd.Timestamp('2021-02-15 18:03:02.893', tz='UTC')},
name='time')


Подробнее здесь: https://stackoverflow.com/questions/797 ... -in-pandas
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»