Я получаю сообщение об ошибке при использовании подкласса pd.Index
, который содержит непримитивные значения. Я использую pandas 0.13.1
.«максимальная глубина рекурсии превышена» при подклассе pandas.Index
Быстрая демонстрация:
import pandas as pd
class MyIndex(pd.Index): pass
# MyIndex = pd.Index <-- if not subclassing, no problem
o1 = object(); o2 = object() # <-- if using primitives, no problem
j = MyIndex([ o1, o2 ])
i = pd.Index(j)
j2 = MyIndex([ o2 ])
i2 = pd.Index(j2)
try:
print pd.Series([ 4,5 ], index = j)[j2] # <-- RuntimeError: maximum recursion depth exceeded while calling a Python object
except RuntimeError, e:
print e
print pd.Series([ 4,5 ], index = j)[i2] # <-- works as expected
print pd.Series([ 4,5 ], index = i)[j2] # <-- works as expected
Вопросы:
- Является ли это ошибка или я делаю что-то не так?
- Что это лучший способ исправить/обход этой ошибки, в тот же время (а) с использованием подкласса из
pd.Index
(мой подкласс включает расширенный интерфейс), и (б) содержит непримитивных значения (объекты пользовательский класс).
Я вижу, что это всего лишь 10 месяцев. При работе с большой сложной системой это слишком рискованно и требует много времени для обновления до новой версии так часто. Я * делаю * оценить темп, в котором панды улучшаются и развиваются (серьезно, это потрясающе), но, к сожалению, я не могу позволить себе так часто обновляться. – shx2