Невозможно импортировать пользовательский класс Python из-за ошибки панд, и после неудачного импорта сам панд прерывается - PullRequest
0 голосов
/ 16 октября 2019

У меня есть класс, который имеет DataFrame в качестве одного из своих атрибутов, и в методе init он создается как пустой DataFrame, если данные не передаются. Это работало нормально до сегодняшнего дня, когда после изменения совершенно другого метода, который даже не использует атрибут dataframe, я теперь не могу импортировать класс вообще. Для иллюстрации:

import pandas as pd

class foo():
    def __init__(data=pd.DataFrame()):
        self.data = data

В другом скрипте:

from foo import bar

возвращает

Traceback (most recent call last):
  File "c:\bar", line 13, in <module>
    class foo():
  File "bar", line 47, in foo:
    data=pd.DataFrame())
  File "C:lib\site-packages\pandas\core\frame.py", line 411, in __init__
    mgr = init_dict(data, index, columns, dtype=dtype)
  File "C:lib\site-packages\pandas\core\internals\construction.py", line 247, in init_dict
    columns = data_names = Index(keys)
  File "C:lib\site-packages\pandas\core\indexes\base.py", line 387, in __new__
    elif isinstance(data, (np.ndarray, Index, ABCSeries)):
TypeError: isinstance() arg 2 must be a type or tuple of types

(пути к файлам обрезаны)

Что на самом делестранно, что после попытки импортировать класс я вообще не могу создавать фреймы данных. Я пытаюсь запустить Python IDE и импортировать панд, все работает, я импортирую свой класс, и теперь вышеупомянутая ошибка теперь происходит даже для test = pd.DataFrame (). Кто-нибудь видел такое раньше?

Редактировать: Итак, в созданном мною классе данных, который является атрибутом того же класса, что и выше, я записал:

@dataclasss
class int_2d_data:
   raw = np.ndarray = 0

вместо

@dataclasss
class int_2d_data:
   raw: np.ndarray = 0

Исправление, которое заставляло все работать. Я до сих пор не знаю, что случилось или почему это сломало бы панд

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...