Удалить время между pandas в цикле данных - PullRequest
1 голос
/ 11 марта 2020

Я хотел бы рекурсивно отбрасывать строки данных, которые расположены между определенной временной дельтой - как показано на рисунке. Which time series to drop

Я подготовил следующий фрагмент кода:

import pandas as pd

time_series = pd.date_range('2018-01-01', periods=100, freq='ms')
df = pd.Series(range(len(time_series)), index=time_series)
print(df)
df = df.drop(df.between_time("00:00:00.003", "00:00:00.098").index)

Диапазон фильтруемого времени должен быть независимым от даты и учитывать только разницу в часах. Как я должен удалить ненужные данные, расположенные в разделах «drop», представленных на рисунке? Значение l oop должно быть до конца кадра данных, содержащего около 100 миллионов строк.

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Этот код сохраняет каждую строку с 3-минутными интервалами, учитывая вашу серию

import pandas as pd
time_series = pd.date_range('2018-01-01', periods=100000000, freq='ms')
df = pd.Series(range(len(time_series)), index=time_series)
df2=df.to_frame()
df2.columns = ['every_3rd_minute']
df2 = df2[df2.every_3rd_minute % 180000 == 0]
print(df2)

производит

                   every_3rd_minute
2018-01-01 00:00:00                 0
2018-01-01 00:03:00            180000
2018-01-01 00:06:00            360000
2018-01-01 00:09:00            540000
2018-01-01 00:12:00            720000
...                               ...
2018-01-02 03:33:00          99180000
2018-01-02 03:36:00          99360000
2018-01-02 03:39:00          99540000
2018-01-02 03:42:00          99720000
2018-01-02 03:45:00          99900000

[556 rows x 1 columns]
0 голосов
/ 11 марта 2020

Вы можете попробовать:

i = pd.date_range('2018-01-01', periods=100, freq='ms')
df = pd.DataFrame({'A': range(100)}, index=i)
df.drop(df.between_time(*pd.to_datetime(['00:00:00.003', '00:00:00.098']).time).index, inplace=True)

Результат:

                          A
2018-01-01 00:00:00.000   0
2018-01-01 00:00:00.001   1
2018-01-01 00:00:00.002   2
2018-01-01 00:00:00.099  99
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...