У меня есть кадр данных Pandas, df1, который является годичным 5 минут тайм-аутами с колонками A-Z.Pandas: фантазия индексирования DataFrame
df1.shape
(105121, 26)
df1.index
<class 'pandas.tseries.index.DatetimeIndex'>
[2002-01-02 00:00:00, ..., 2003-01-02 00:00:00]
Length: 105121, Freq: 5T, Timezone: None
У меня есть второй dataframe, df2, то есть годичная ежедневно таймсерия (за тот же период) с соответствующими столбцами. Значения этого второго кадра являются булевыми.
df2.shape
(365, 26)
df2.index
<class 'pandas.tseries.index.DatetimeIndex'>
[2002-01-02 00:00:00, ..., 2003-01-01 00:00:00]
Length: 365, Freq: D, Timezone: None
Я хочу использовать df2 как фантазии индекса df1, т.е. «df1.ix [df2]» или сконвертировано, так что я получаю обратно подмножество столбцов df1 по каждой дате - т.е. те, которые df2 говорит, что в эту дату True (со всеми отметками времени). Таким образом, форма результата должна быть (105121, ширина), где width - количество различных столбцов, которые подразумевают булевы (ширина < = 26).
В настоящее время df1.ix [df2] работает только частично. Выбраны только значения 00:00 за каждый день, что имеет смысл в свете временных рядов df2.
Затем я попытался время охватывает как индекс df2:
df2.index
PeriodIndex: 365 entries, 2002-01-02 to 2003-01-01
На этот раз, я получаю сообщение об ошибке:
/home/wchapman/.local/lib/python2.7/site-packages/pandas-0.11.0-py2.7-linux-x86_64.egg/pandas/core/index.pyc in get_indexer(self, target, method, limit)
844 this = self.astype(object)
845 target = target.astype(object)
--> 846 return this.get_indexer(target, method=method, limit=limit)
847
848 if not self.is_unique:
AttributeError: 'numpy.ndarray' object has no attribute 'get_indexer'
Моя временное решение заключается в цикле по дате, но это, кажется неэффективным. Возможно, Панды способны на такую причудливую индексацию? Я не вижу примеров в документации.
Вы можете ресэмплировать 'df2' до 5 минут и заполнить Это. – joris
Спасибо, должен был упомянуть, что я тоже это пробовал. Got ValueError: невозможно индексировать с помощью многомерного ключа. – Will