У меня есть простой Pandas DataFrame
, содержащий столбцы 'valid_time'
и 'value'
. Частота выборки составляет примерно ежечасно, но нерегулярно и с некоторыми большими пробелами. Я хочу иметь возможность эффективно вытащить все строки за данный день (т. Е. В течение календарного дня). Как это сделать, используя DataFrame.where()
или что-то еще?Как найти все строки с определенной датой с помощью Pandas?
я наивно хочу сделать что-то вроде этого (что, очевидно, не работает):
dt = datetime.datetime(<someday>)
rows = data.where(data['valid_time'].year == dt.year and
data['valid_time'].day == dt.day and
data['valid_time'].month == dt.month)
Там, по крайней мере, несколько проблем, с выше кодом. Я новичок в пандах, так что я воодушевляюсь тем, что, вероятно, просто.
Спасибо. Мой dataframe был сделан просто путем преобразования двумерного массива numpy, поскольку мне не удалось разработать синтаксис для создания «пустого» DataFrame, который я заполнил необходимой информацией. Я знаком с numpy, так что это казалось самым быстрым решением. Я посмотрю, как установить поле времени как индекс, хотя, поскольку эта функциональность, которую вы демонстрируете, выглядит точно так, как мне нужно для этого проекта. – Bogdanovist
Из чего генерируется ваш 2D-массив? Читайте в файле? Вытащил из БД? Расчеты? –
Вычисления (в основном), теперь я инициализирую это следующим образом: (например) hourly_pred = pd.DataFrame ({'T': np.zeros (len (fpred)), 'W': np.zeros (len (fpred))}, index = fpred.index) – Bogdanovist