Итак, я получил результат вызова pandas.groupby()
, и я хочу запросить результат в запросе в стиле mysql select
. Вот MWE кода, из которого я пытаюсь работать:
import pandas as pd
import numpy as np
from datetime import datetime as dt
dates = np.array([dt(2012, 9, 27, 8, 52, 21),
dt(2012, 10, 6, 5, 4, 15),
dt(2012, 10, 7, 4, 53, 4),
dt(2012, 10, 9, 7, 21, 18),
dt(2012, 10, 10, 5, 4, 8),
dt(2012, 10, 11, 4, 58, 43),
dt(2012, 10, 12, 11, 15, 25),
dt(2012, 10, 13, 10, 45, 23),
dt(2012, 10, 20, 6, 0, 25),
dt(2012, 10, 22, 7, 41, 38)])
values = np.array([5.61006523, 5.39632183, 5.49317193, 5.42327983, 5.4623386,
5.42444747, 5.60362929, 5.57041331, 5.34893575, 5.48222005])
date_bins = np.array([dt(2012, 9, 29, 14),
dt(2012, 10, 10, 14),
dt(2012, 10, 14, 14),
dt(2012, 10, 23, 14)])
df1 = pd.DataFrame({'date':dates, 'value': values})
df2 = pd.DataFrame({'bin_dates':date_bins})
print(df1.groupby(pd.cut(df1['date'], df2['bin_dates'])).agg({'value':np.nanmean}))
Уступая:
value
date
(2012-09-29 14:00:00, 2012-10-10 14:00:00] 5.443778
(2012-10-10 14:00:00, 2012-10-14 14:00:00] 5.532830
(2012-10-14 14:00:00, 2012-10-23 14:00:00] 5.415578
По сути, я создаю представление данных гистограммы профиля с настраиваемым временным биннингом. Вопрос, который у меня сейчас возникает, заключается в том, что я пытаюсь использовать результат этого для запроса новых времен (скажем, 2012-10-11 3:00:00
) и возможности получить среднее значение из этого связанного бина (5.532830
). Может кто-нибудь посоветовать мне, как это сделать? Возможно ли это в рамках панд? Или мне нужно переместить данные в нечто вроде mysql?