Вывести все события по дате pandas

Имеется таблица логов в формате csv,колонки date,user,event_type,parameter, дата указана по такому типу 2020-04-01_00:01:08, я хочу чтобы в выводе были все события начиная с 2020-04-18_00:00:16 по 2020-04-18_23:59:50

import pandas as pd
import numpy as np

df = pd.read_csv("log (1).csv")
df['date'] = pd.date_range('2020-04-01_00:01:08', periods=200, freq='D')
df = df.set_index(['date'])
print(df.loc['2020-04-18_00:00:16':'2020-04-18_23:59:50'])

при выполнении кода выдает ошибку could not convert string to Timestamp


Ответы (1 шт):

Автор решения: CrazyElf

Подчёркивание между датой и временем Pandas не понимает. Если заменить его на пробел, то всё работает:

import pandas as pd
import numpy as np

df = pd.DataFrame()
df['date'] = pd.date_range('2020-04-01 00:01:08', periods=200, freq='D')
df = df.set_index(['date'])
print(df.loc['2020-04-18 00:00:16':'2020-04-18 23:59:50'])

Вывод:

Empty DataFrame
Columns: []
Index: [2020-04-18 00:01:08]

Если же у вас где-то в готовом файле есть такое подчёркивание, то его легко заменить и преобразовать таки строку в датувремя:

df = pd.DataFrame({'date': ['2020-04-18_00:00:16', '2020-04-18_23:59:50']})
df['date'] = pd.to_datetime(df['date'].str.replace('_', ' '))
→ Ссылка