Я пробовал следующий фрагмент кода.Индексация индексов индексирования Pandas терпит неудачу, когда индекс является иерархическим
In [84]:
from datetime import datetime
from dateutil.parser import parse
rng = [datetime(2017,1,13), datetime(2017,1,14), datetime(2017,2,15), datetime(2017,2,16)]
s = Series([1,2,3,4], index=rng)
s['2017/1']
Out[84]:
2017-01-13 1
2017-01-14 2
dtype: int64
Как я и ожидал, я мог бы успешно получать только те элементы, принадлежащие JAN лишь указать до JAN как с [ «2017/1»].
В следующий раз, я попробовал немного расширенную версию приведенной выше кода, где иерархический индекс был использован вместо того, чтобы:
from datetime import datetime
from dateutil.parser import parse
rng1 = [datetime(2017,1,1), datetime(2017,1,1), datetime(2017,2,1), datetime(2017,2,1)]
rng2 = [datetime(2017,1,13), datetime(2017,1,14), datetime(2017,2,15), datetime(2017,2,16)]
midx = pd.MultiIndex.from_arrays([rng1, rng2])
s = Series([1,2,3,4], index=midx)
s['2017/1']
выше фрагмента кода, однако, порождает ошибка: TypeError: unorderable типов: int()> slice()
Не могли бы вы помочь?
Спасибо @jezrael! Просто использование .loc() отлично работает! Похоже, что серия с мультииндексисом больше не рассматривается как объект TimeSeries, хотя индекс содержит информацию о времени. Если бы это было так, индексирование в строку с использованием временной строки было бы законной операцией. Раньше я пытался использовать .ix(), но индексирование с помощью ix() терпит неудачу. Это все еще странно для меня. – Royalblue
Теперь лучше не использовать ['ix'] (http://pandas-docs.github.io/pandas-docs-travis/whatsnew.html#deprecate-ix) Если мой ответ был полезен, не забудьте [принять ] (http://meta.stackexchange.com/a/5235/295067). Благодарю. – jezrael