Как отловить исключения pandas dataframe / pandas_datareader.data - PullRequest
0 голосов
/ 09 мая 2020

Я использую pandas_datareader.data для получения цен на акции, но для некоторых акций (BFB) недостаточно данных, и я получаю следующее исключение. Я хотел бы знать, как отловить это исключение, я использовал RemoteDataError, indexError и DataError, но он не работает, и я не хочу рассматривать его как общее исключение.

    KeyError                                  Traceback (most recent call last)
C:\ProgramData\Anaconda3\envs\ml_finance\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2896             try:
-> 2897                 return self._engine.get_loc(key)
   2898             except KeyError:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'Date'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-24-3794b07996e9> in <module>()
      5 END_DATE = '2020-04-30'
      6 try:
----> 7     web.get_data_yahoo('BFB', START_DATE, END_DATE)
      8 except RemoteDataError:
      9     pass

C:\ProgramData\Anaconda3\envs\ml_finance\lib\site-packages\pandas_datareader\data.py in get_data_yahoo(*args, **kwargs)
     80 
     81 def get_data_yahoo(*args, **kwargs):
---> 82     return YahooDailyReader(*args, **kwargs).read()
     83 
     84 

C:\ProgramData\Anaconda3\envs\ml_finance\lib\site-packages\pandas_datareader\base.py in read(self)
    249         # If a single symbol, (e.g., 'GOOG')
    250         if isinstance(self.symbols, (string_types, int)):
--> 251             df = self._read_one_data(self.url, params=self._get_params(self.symbols))
    252         # Or multiple symbols, (e.g., ['GOOG', 'AAPL', 'MSFT'])
    253         elif isinstance(self.symbols, DataFrame):

C:\ProgramData\Anaconda3\envs\ml_finance\lib\site-packages\pandas_datareader\yahoo\daily.py in _read_one_data(self, url, params)
    163         prices1 = DataFrame(data["prices"])
    164         prices.columns = [col.capitalize() for col in prices.columns]
--> 165         prices["Date"] = to_datetime(to_datetime(prices["Date"], unit="s").dt.date)
    166 
    167         if "Data" in prices.columns:

C:\ProgramData\Anaconda3\envs\ml_finance\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
   2993             if self.columns.nlevels > 1:
   2994                 return self._getitem_multilevel(key)
-> 2995             indexer = self.columns.get_loc(key)
   2996             if is_integer(indexer):
   2997                 indexer = [indexer]

C:\ProgramData\Anaconda3\envs\ml_finance\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2897                 return self._engine.get_loc(key)
   2898             except KeyError:
-> 2899                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   2900         indexer = self.get_indexer([key], method=method, tolerance=tolerance)
   2901         if indexer.ndim > 1 or indexer.size > 1:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'Date'

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