Я хотел бы отбросить несколько групп строк по критерию времени. Критерий даты может быть проигнорирован. У меня есть фрейм данных, который содержит 100 миллионов строк, с частотой выборки около 0,001 с, но он варьируется для разных столбцов. Цель состоит в том, чтобы отбросить несколько строк по критерию «смещение». Продолжительность отпуска может составлять 0,01 секунды, а продолжительность сброса может составлять 0,1 секунды, как показано на рисунке:
![The idea of dropping rows](https://i.stack.imgur.com/J0pJo.png)
У меня много проблем с меткой времени во времени преобразования и с определением oneliner, который будет отбрасывать несколько групп строк. Я сделал попытки со следующим кодом:
import pandas as pd
from datetime import timedelta#, timestamp
from datetime import datetime
import numpy as np
# leave_duration=0.01 seconds
# drop_duration=0.1 seconds
i = pd.date_range('2018-01-01 00:01:15.004', periods=1000, freq='2ms')
i=i.append(pd.date_range('2018-01-01 00:01:15.004', periods=1000, freq='3ms'))
i=i.append(pd.date_range('2018-01-01 00:01:15.004', periods=1000, freq='0.5ms'))
df = pd.DataFrame({'A': range(len(i))}, index=i)
df=df.sort_index()
minimum_time=df.index.min()
print("Minimum time:",minimum_time)
maximum_time=df.index.max()
print("Maximum time:",maximum_time)
# futuredate = minimum_time + timedelta(microseconds=100)
print("Dataframe before dropping:\n",df)
df.drop(df.between_time(*pd.to_datetime([minimum_time, maximum_time]).time).index, inplace=True)
print("Dataframe after dropping:\n",df)
# minimum_time=str(minimum_time).split()
# minimum_time=minimum_time[1]
# print(minimum_time)
# maximum_time=str(maximum_time).split()
# maximum_time=maximum_time[1]
# print(maximum_time)
Как я могу отбросить строки по временному критерию со сдвигом?