Получение значений из индексируемого фрейма данных pandas за определенное время в двух временных метках - PullRequest
2 голосов
/ 29 мая 2019

У меня есть следующий файл данных pandas df:

                     C1  C2   C3
Date                             
2000-01-01 00:00:00   2  175  160
2000-01-01 01:00:00   4  192  164
2000-01-01 02:00:00   6  210  189
2000-01-01 03:00:00   8  217  199
2000-01-01 04:00:00  10  176  158

, из которого мне нужно получить значения C1, C2 и C3 для конкретной даты и времени:

import datetime
my_specific_time = str(datetime.datetime(2000, 1, 1, 1, 0, 0))
print(df['C1'].loc[mytime]) # prints 4

Проблемаявляется то, что я могу получить значения только для дат, хранящихся в DF.Например, получение значения C1 для времени 2000-01-01 01:30:00 невозможно, пока я не выполню повторную выборку моего кадра данных:

upsampled = df.resample('30min').ffill()
my_specific_time = str(datetime.datetime(2000, 1, 1, 1, 30, 0))
print(upsampled['C1'].loc[mytime]) # again prints 4

Обратите внимание, что все значения C1 между временными интервалами 2000-01-01 01:00:00 и2000-01-01 02:00:00 - это 4.Теперь проблема в том, что my_specific_time может быть любым случайным временем, и мне нужно было бы пересчитать df, используя достаточно малые значения, чтобы можно было получить значение для.Я думаю, что это не лучшее решение для этой проблемы.

При поиске возможных решений я встречал только промежутки времени в пандах, но я не совсем понимал, как можно использовать его в своей проблеме.Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 29 мая 2019

Использование DataFrame.asof метод:

print(df['C1'].asof(my_specific_time))

4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...