ARahimiQuant / finpy-tse

A Python Package to Access Tehran Stock Exchange Historical and Real-Time Data
https://pypi.org/project/finpy-tse/
BSD 3-Clause "New" or "Revised" License
72 stars 12 forks source link

مشکل دریافت اطلاعات شاخص کل #7

Closed Mazochi closed 1 year ago

Mazochi commented 1 year ago

با سلام و وقت بخیر اول از شما تشکر می‌کنم بابت کتابخانه کاربردی‌ای که توسعه دادید.

من یک ماه قبل می‌تونستم با استفاده از نسخه قبلی شما اطلاعات شاخص کل را با قطعه کد نمونه دانلود کنم. اما امروز با خطا مواجه شدم. با بروزرسانی به نسخه ۱.۲.۶ هم مشکل رفع نشد.

کد:

fpy.Get_CWI_History(
    start_date='1395-01-01',
    end_date='1400-12-29',
    ignore_date=False,
    just_adj_close=False,
    show_weekday=False,
    double_date=False)

متن خطا:

ValueError                                Traceback (most recent call last)
Cell In[14], line 1
----> 1 fpy.Get_CWI_History(
      2     start_date='1395-01-01',
      3     end_date='1400-12-29',
      4     ignore_date=False,
      5     just_adj_close=False,
      6     show_weekday=False,
      7     double_date=False)

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\finpy_tse\__init__.py:353, in Get_CWI_History(start_date, end_date, ignore_date, just_adj_close, show_weekday, double_date)
    351 df_sector_cl = pd.DataFrame(r_cl.text.split(';'))
    352 columns=['J-Date','Adj Close']
--> 353 df_sector_cl[columns] = df_sector_cl[0].str.split(",",expand=True)
    354 df_sector_cl.drop(columns=[0],inplace=True)
    355 df_sector_cl['J-Date'] = df_sector_cl['J-Date'].apply(lambda x: str(jdatetime.date(int(x.split('/')[0]),int(x.split('/')[1]),int(x.split('/')[2]))))

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\frame.py:3968, in DataFrame.__setitem__(self, key, value)
   3966     self._setitem_frame(key, value)
   3967 elif isinstance(key, (Series, np.ndarray, list, Index)):
-> 3968     self._setitem_array(key, value)
   3969 elif isinstance(value, DataFrame):
   3970     self._set_item_frame_value(key, value)

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\frame.py:4010, in DataFrame._setitem_array(self, key, value)
   4005 else:
   4006     # Note: unlike self.iloc[:, indexer] = value, this will
   4007     #  never try to overwrite values inplace
   4009     if isinstance(value, DataFrame):
-> 4010         check_key_length(self.columns, key, value)
   4011         for k1, k2 in zip(key, value.columns):
   4012             self[k1] = value[k2]

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\indexers\utils.py:401, in check_key_length(columns, key, value)
    399 if columns.is_unique:
    400     if len(value.columns) != len(key):
--> 401         raise ValueError("Columns must be same length as key")
    402 else:
    403     # Missing keys in columns are represented as -1
    404     if len(columns.get_indexer_non_unique(key)[0]) != len(value.columns):

ValueError: Columns must be same length as key
ARahimiQuant commented 1 year ago

سلام،

ورژن جدید مشکلی در دریافت دیتای شاخص کل ندارد. آنچه منجر به خطاهای این چنینی میشود ناشی از نحوه پاسخگویی TSE است که متاسفانه مدتیست با اختلال گاه و بیگاه همراه است. تنها راهکار تلاش مجدد است.

issue_7