операторы столбца / списка для значений даты и времени в python - PullRequest
0 голосов
/ 22 октября 2019

У меня есть фрейм данных pandas, в котором один из столбцов состоит из значений даты и времени с разными частотами.

Я хочу создать новый столбец, который будет отмечать всякий раз, когда разрыв между двумя значениями даты и времени превышает один день (datetimeтекущая строка + timedelta (days = 1)

Однако я бы хотел сделать это с помощью операции списка, а не цикла for.

Если бы значения былизначения int, вы можете сделать что-то вроде:

df_ship["gap_gt_1"] = (df_ship['datetime']+1).lt(df_ship['datetime'].shift().bfill()).astype(int)

Однако операторы lt и подобные не работают с объектами datetime.

Я пытался сделать следующее, но это тольковозвращает ложные значения.

df_ship["gap_gt_1"] = ((df_ship['datetime'] + timedelta(days=1)) < (df_ship['datetime'].shift()))

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Можно попробовать сделать:

import numpy as np

# Take the difference in dates
df["timedelta"] = df['date'] - df['date'].shift(1)

# To make the flags
conditions, type_choices = ([df['timedelta'] > pd.Timedelta(days=1)], [1])
df["flag"] = np.select(conditions, type_choices, default=0)
0 голосов
/ 22 октября 2019

Вы можете просто использовать:

df["timedelta"] = df['date'] - df['date'].shift(1)
df["flag"] = 1 if df["timedelta"] > pd.Timedelta(days=1) else 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...