Получение значения временных рядов панд в определенное время - PullRequest
2 голосов
/ 06 ноября 2019

Допустим, у меня есть серия времен

2019-09-20 00:30:51.234260+00:00    4.63
2019-09-20 00:50:51.292892+00:00    4.40
2019-09-20 01:30:51.273058+00:00    4.54
2019-09-20 01:50:51.270876+00:00    4.44
2019-09-20 02:30:51.267385+00:00    4.55
                                    ... 
2019-10-30 22:57:35.003066+00:00    1.71
2019-10-30 23:12:34.965801+00:00    1.61
2019-10-30 23:27:34.976495+00:00    1.56
2019-10-30 23:42:34.984976+00:00    1.26
2019-10-30 23:57:34.965543+00:00    1.05

, и мне нужно значение во время 2019-09-20 00:40:00+00:00. Если предположить, что значения записаны по принципу изменения значения, что означает, что интерполяция не требуется, правильный ответ будет 4,63. Как бы я поступил так?

Простой ввод pandas_timeseries['2019-09-20 00:40:00+00:00'] возвращает KeyError, конечно ...

Я думал об усечении временных рядов до after = '2019-09-20 00:40: 00 + 00: 00 'и затем получить последнее значение, но это выглядит очень нелегко.

1 Ответ

2 голосов
/ 06 ноября 2019

searchsorted

Возвращает позицию, в которую можно вставить искомую вещь, сохраняя сортировку.

Я предполагаю, что ваше имя временного ряда равно s. Я вычитаю один, потому что вы ищете предыдущую позицию.

lookup = pd.Timestamp('2019-09-20 00:40:00+00:00')

s.iloc[s.index.searchsorted(lookup) - 1]

4.63

В противном случае вы можете использовать reindex с ffill

s.reindex([lookup], method='ffill')

2019-09-20 00:40:00+00:00    4.63
Name: value, dtype: float64
...