English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Timedelta Pandas

Пример операции с Pandas Timedelta

Инкремент времени — это разница во времени, выраженная в единицах времени, таких как день, час, минута, секунда. Они могут быть как положительными, так и отрицательными.

Используя строковое выражение, мы можем создать объект timedelta.

Строка

Мы можем создать объект Timedelta с использованием различных параметров, как показано ниже-

import pandas as pd
print(pd.Timedelta('2 days 2 hours 15 minutes 30 seconds'))

Результат выполнения таков:

 2 дней 02:15:30

Целое число

Параметр создаст объект Timedelta, если к нему передан целое значение.

import pandas as pd
print(pd.Timedelta(6,unit='h'))

Результат выполнения таков:

 0 дней 06:00:00

ДанныеOffset

ДанныеOffset (например, -неделя, день, час, минута, секунда, миллисекунда, микросекунда, наносекунда) также могут быть использованы при создании.

import pandas as pd
print(pd.Timedelta(days=2))

Результат выполнения таков:

2 дней 00:00:00

to_timedelta()

Используя pd.to_timedelta, вы можете преобразовать скаляр, массив, список или последовательность из признанных форматов/значений timedelta в тип Timedelta. Если входные данные являются Series, то будет создан Series; если они являются скаляром, то будет создан скаляр; в противном случае, будет выведен TimedeltaIndex.

import pandas as pd
print(pd.Timedelta(days=2))

Результат выполнения таков:

2 дней 00:00:00

Конкретные действия

Вы можете выполнять операции с Series / DataFrame, и с помощью вычитания datetime64 [ns] Series или Timestamps можно создать Series с Timedelta64 [ns] .
Теперь давайте создадим DataFrame с объектами Timedelta и datetime и выполним над ними некоторые арифметические операции-

 import pandas as pd
 s = pd.Series(pd.date_range('2012-1-1', periods=3, freq='D'))
 td = pd.Series([pd.Timedelta(days=i) for i in range(3)])
 df = pd.DataFrame(dict(A = s, B = td))
 print(df)

Результат выполнения таков:

          A      B
0  2012-01-01 0 дней
1  2012-01-02 1 день
2  2012-01-03 2 дней

Добавление

 import pandas as pd
 s = pd.Series(pd.date_range('2012-1-1', periods=3, freq='D'))
 td = pd.Series([pd.Timedelta(days=i) for i in range(3)])
 df = pd.DataFrame(dict(A = s, B = td))
 df['C'] = df['A'] + df['B']
 print(df)

Результат выполнения таков:

         A      B          C
0 2012-01-01 0 days 2012-01-01
1 2012-01-02 1 days 2012-01-03
2 2012-01-03 2 days 2012-01-05

Вычитание

 import pandas as pd
 s = pd.Series(pd.date_range('2012-1-1', periods=3, freq='D'))
 td = pd.Series([pd.Timedelta(days=i) for i in range(3)])
 df = pd.DataFrame(dict(A = s, B = td))
 df['C'] = df['A'] + df['B']
 df['D'] = df['C'] + df['B']
 print(df)

Результат выполнения таков:

         A      B          C          D
0 2012-01-01 0 days 2012-01-01 2012-01-01
1 2012-01-02 1 days 2012-01-03 2012-01-04
2 2012-01-03 2 days 2012-01-05 2012-01-07