вот хитрый способ сделать это
df = pd.DataFrame([('11178', '2018-10-27 12:00:00', '-1', '-3'), ('11179', '2018-03-30 18:00:00', '-2', '2'), ('11180', '2018-10-28 00:00:00', '1', '8'), ('11181', '2018-10-28 06:00:00', '0.1', '-0.2'), ('11182', '2018-10-28 12:00:00', '0.2', '-0.1'), ('11183', '2018-10-28 18:00:00', '0.2', '0.03'), ('11184', '2018-4-29 00:00:00', '0.3', '0.07'), ('11185', '2018-9-29 06:00:00', '0.2', '-0.2'), ('11186', '2018-10-29 12:00:00', '0.05', '-0.4'), ('11187', '2018-10-29 18:00:00', '0.02', '-0.5'), ('11188', '2018-10-30 00:00:00', '0.02', '-0.6'), ('11189', '2018-10-30 06:00:00', '-0.05', '-0.7')], columns=('ID', 'Dates', 'Col1', 'Col2'))
df = df.set_index("ID")
df.Dates = pd.to_datetime(df.Dates)
df[~(df.Dates.dt.month*100 + df.Dates.dt.day).between(330, 930, inclusive=False)]
Описание
- 100 * месяц + день преобразует дату в 3-значное число, например 330будет 30 марта, а 930 будет 30 сентября
- вы хотите исключить даты между 330 и 930, поэтому мы используем оператор not для дат внутри него