Метод Reindex Pandas не соблюдает установленную частоту

У меня есть DataFrame Pandas с ежедневным DatetimeIndex. Я пытаюсь применить метод Resample, чтобы суммировать значения в ежемесячный ряд следующим образом:

>>> aggVols.resample('M',axis=1).sum()

Но когда я пытаюсь это сделать, я получаю сообщение об ошибке

TypeError: Only valid with DatetimeIndex or PeriodIndex

Заметил, что частота индекса объекта не выставлена ​​(None).

>>>aggVols.index
<class 'pandas.tseries.index.DatetimeIndex'>
[2016-01-04, ..., 2016-07-01]
Length: 130, Freq: None, Timezone: None

Итак, я сначала установил частоту на день (рабочий день) и сбросил индекс, чтобы можно было применить повторную выборку:

>>> aggVols    = aggVols.reindex(aggVols.asfreq('B').index)
>>> aggVols.index
<class 'pandas.tseries.index.DatetimeIndex'>
[2016-01-04, ..., 2016-07-01]
Length: 130, Freq: B, Timezone: None

Но я все еще получаю ту же ошибку, что и функция передискретизации:

TypeError: Only valid with DatetimeIndex or PeriodIndex

Что не так с индексом? Почему не действует? Я получаю ту же ошибку, если устанавливаю частоту D.

Спасибо!


person David    schedule 22.07.2016    source источник
comment
Пожалуйста, опубликуйте образец DataFrame.   -  person Alex    schedule 22.07.2016


Ответы (2)


Изменять

aggVols.resample('M',axis=1).sum()

to

aggVols.resample('M',axis=0).sum()

Ваш DatetimeIndex находится в строках (а не в столбцах).

В общем, ось 0 - это строки, ось 1 - столбцы, ось 2 - высота, а оси 3-N ... ну, они рассматриваются более абстрактно.

См. Раздел «вдоль оси» в документации NumPy.

person Alex    schedule 22.07.2016
comment
Спасибо за ответ. Вы правы, DatetimeIndex предназначен для строк (а не для столбцов). Так что, возможно, я действительно указал неправильную ось. Но то, что вы предлагаете, дайте мне одно число на столбец. Он не выпускает ежемесячных серий. '››› aggVols.resample (' M ', axis = 0) .sum () CMX 114237.608293 LME 1425516.887879 SHF 50861180.513820 dtype: float64' - person David; 22.07.2016
comment
@ Дэвид, вы хотите просуммировать строки DataFrame? - person Alex; 22.07.2016
comment
@David поможет, если вы разместите образец DataFrame и желаемый результат. - person Alex; 22.07.2016
comment
Ответил на мой собственный вопрос выше. В любом случае спасибо за помощь. - person David; 22.07.2016

Получил, в конце концов. Неправильно использовал метод с операцией в конце, как если бы это была серия. Правильный код:

aggVols.resample('M',axis=0,how=sum)
person David    schedule 22.07.2016