Я бы использовал .shift () для этого. Создает новый столбец со значениями, сдвинутыми на 1.
Поэтому, если у нас нет условий, вам понадобится просто df["time"] - df["time"].shift()
, но если вы хотите добавить условие, where
поможет. Итак, вот решение в одну строку
(df["time"] - df["time"].shift()).where(df["type"] == df["type"].shift(), "")
Или, как предлагается в другом ответе, вы можете использовать diff
df["time"].diff().where(df["type"] == df["type"].shift(), "")