Как я могу ограничить временной ряд pandas n последними секундами? - PullRequest
0 голосов
/ 09 июля 2020

У меня есть временные ряды pandas

time_series = pd.Series(data=[3,4,5], index=pd.DatetimeIndex(['2020-07-07 00:06:00.283', '2020-07-07 00:06:02.542', '2020-07-07 00:06:02.829']), name='I'))

с временными метками datetime в формате ISO как index . Как я могу получить подмножество временного ряда, которое соответствует последним n секундам (например, 1 секунде)?

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Один лайнер с использованием datetime.timedelta будет

import pandas as pd
import datetime

time_series = pd.Series(data=[3,4,5], index=pd.DatetimeIndex(['2020-07-07 00:06:00.283', '2020-07-07 00:06:02.542', '2020-07-07 00:06:02.829']), name='I')

time_series.loc[time_series.index >= max(time_series.index) - datetime.timedelta(seconds=1)]
# 2020-07-07 00:06:02.542    4
# 2020-07-07 00:06:02.829    5
# Name: I, dtype: int64
1 голос
/ 09 июля 2020

Вы можете взять последнее значение своего индекса и вычесть из него настраиваемый временной шаг, а затем выбрать все индексы с большими значениями

n_sec = 1
time_series.index = pd.to_datetime(time_series.index, format="%Y-%m-%d %H:%M:%S")
first_value = time_series.index.max() - pd.to_timedelta(n_sec, unit='s')

, что должно дать

> print(time_series[first_value:])
2020-07-07 00:06:02.542    4
2020-07-07 00:06:02.829    5
Name: I, dtype: int64
...