Я пытаюсь удалить строки из кадра данных, которые имеют значение timedelta меньше некоторого количества секунд.
Мой фрейм данных выглядит примерно так:
Start Elapsed time
0 2018-10-29 07:56:20 0 days 00:15:05
1 2018-10-29 07:56:20 0 days 00:15:05
2 2018-10-29 08:11:25 0 days 00:00:02
3 2018-10-29 08:11:27 0 days 00:00:08
4 2018-10-29 08:11:27 0 days 00:00:08
5 2018-10-29 08:11:35 0 days 00:00:02
6 2018-10-29 08:11:37 0 days 00:00:00
Я хотел бы удалить все строки, у которых истекшее время меньше некоторого количества секунд - скажем, 3 на данный момент. Поэтому я бы хотел, чтобы датафрейм выглядел так (из приведенного выше):
Start Elapsed time
0 2018-10-29 07:56:20 0 days 00:15:05
1 2018-10-29 07:56:20 0 days 00:15:05
3 2018-10-29 08:11:27 0 days 00:00:08
4 2018-10-29 08:11:27 0 days 00:00:08
Я пробовал несколько разных вещей, выдавая несколько разных сообщений об ошибках - обычно несовместимые ошибки сравнения типов. Например:
df_new = df[df['Elapsed time'] > pd.to_timedelta('3 seconds')]
df_new = df[df['Elapsed time'] > datetime.timedelta(seconds=3)]
Я бы хотел избежать итерации по всем строкам, но если это то, что я должен сделать, я сделаю это.
Ваша помощь очень ценится!
Редактировать: Моя настоящая проблема в том, что dtype моего столбца «Истекшее время» - это объект, а не timedelta. Быстрое исправление состояло бы в приведении dtype с использованием приведенного ниже кода, но лучшим решением было бы убедиться, что dtype не установлен в тип объекта в первую очередь. Спасибо всем за помощь и комментарии.
df_new = df[pd.to_timedelta(df['Elapsed time']) > pd.to_timedelta('3 seconds')]