Problem z wielektornym wykonaniem kodu z biblioteki miner

1

Witam, napisałem program którego zadaniem jest tworzenie wykresów cryptowalut. Stworzyłem bibliotek miner a w niej za pomocą pandas datareader czytam dane.

Traceback (most recent call last):
  File "C:\Users\lenovo\PycharmProjects\coin\main.py", line 7, in <module>
    dt2.czytaj("ADA")
  File "C:\Users\lenovo\PycharmProjects\coin\miner.py", line 36, in czytaj
    combined.columns = self.colnames
  File "C:\Users\lenovo\PycharmProjects\crypto\venv\lib\site-packages\pandas\core\generic.py", line 5596, in __setattr__
    return object.__setattr__(self, name, value)
  File "pandas\_libs\properties.pyx", line 70, in pandas._libs.properties.AxisProperty.__set__
  File "C:\Users\lenovo\PycharmProjects\crypto\venv\lib\site-packages\pandas\core\generic.py", line 769, in _set_axis
    self._mgr.set_axis(axis, labels)
  File "C:\Users\lenovo\PycharmProjects\crypto\venv\lib\site-packages\pandas\core\internals\managers.py", line 214, in set_axis
    self._validate_set_axis(axis, new_labels)
  File "C:\Users\lenovo\PycharmProjects\crypto\venv\lib\site-packages\pandas\core\internals\base.py", line 64, in _validate_set_axis
    raise ValueError(
ValueError: Length mismatch: Expected axis has 1 elements, new values have 2 elements

Process finished with exit code 1

miner.py
i zaimportowałem ją do pliku main
main.py
I problem polega na tym że pierwsza instancja obiektu się wykonuje natomiast 2 już nie. Otrzymuje błąd
blad.txt
Z góry dziękuje za wskazówki co tu należy poprawić.

0

Nie znam się ale pierwsze co się rzuca w oczy to to, że raz masz nawiasy 'takie' a raz "takie".

3

Problemem może być

class miner():
  colnames = []
  def czytaj(self,cr):
    self.colnames.append(ticker)

W pytonie przypisanie zmiennej bezpośrednio w ciele klasy tworzy atrybut klasy współdzielony przez obiekty. To znaczy, że wywołanie czytaj() na kolejnym obiekcie dodaje wartości do colnames z poprzedniego obiektu, co czyni listę za długą. Usuń wszystkie atrybuty klasy i zmień na zmienne lokalne, albo atrybuty obiektu przypisywane w konstruktorze:

class miner():
  def __init__(self):
    self.colnames = []
0

@Krzemień: Dziękuje serdecznie za podpowiedź! Problem rozwiązany! Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1