У меня есть следующий фрейм данных 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, используя достаточно малые значения, чтобы иметь возможность получить значение. Я думаю, что это не лучшее решение этой проблемы.
При поиске возможных решений я наткнулся только на промежутки времени в пандах, но я не совсем понял, как я могу использовать его в своей проблеме.
попробуй
.asof
:print(df['C1'].asof(my_specific_time))