首頁 > 軟體

Pandas出現KeyError的問題解決及分析

2023-01-18 14:01:50

寫在前面

今天在用爬蟲及Pandas更新股票日線資料的時候發現KeyError報錯,後面跟了一個DataFrame列索引,一開始以為是索引修改列的值導致的問題,修改為.loc錯誤依然出現,後來將列值的內容修改方法改為.apply(lambda)問題依然出現。就在百思不得其解時,我發現了問題所在。。。

報錯詳細資訊

主要設定及環境

  • Windows 10 64位元
  • Python:3.6.8
  • Pandas:1.0.3

報錯內容

Traceback (most recent call last):
  File "E:py36libsite-packagespandascoreindexesbase.py", line 2646, in get_loc
    return self._engine.get_loc(key)
  File "pandas_libsindex.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
  File "pandas_libsindex.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
  File "pandas_libshashtable_class_helper.pxi", line 1619, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas_libshashtable_class_helper.pxi", line 1627, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'turnover'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "E:aaaDesktoptest.py", line 34, in <module>
    df['turnover'] = df['turnover'] * 100
  File "E:py36libsite-packagespandascoreframe.py", line 2800, in __getitem__
    indexer = self.columns.get_loc(key)
  File "E:py36libsite-packagespandascoreindexesbase.py", line 2648, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))
  File "pandas_libsindex.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
  File "pandas_libsindex.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
  File "pandas_libshashtable_class_helper.pxi", line 1619, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas_libshashtable_class_helper.pxi", line 1627, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'turnover'
[Finished in 5.4s]

問題解決

程式碼主要流程:
抓取Sina財經的日線資料介面(有需要者可以私信我瞭解更多),抓取交易日所有交易的股票資料,進行資料處理、整合為DataFrame並逐行讀取存入CSV檔案。

既然不是索引的問題,那就只有一直往上追溯,結果發現,在 設定抓取函數的迴圈跳出條件 時,由於各大網站最近在備案&更新,導致空資料頁面顯示內容變成了一個字串型別的空列表。。。於是只要將回圈跳出的條件設定為:

if eval(content) == []:

就可以解決問題了。

舉一反三

由於這次的經驗,我發現在出現KeyError報錯的時候,需要先檢視資料是不是存在空值,尤其是程式裡面有爬蟲程式碼的時候,更需要注意。網站經常在變,不過基本上沒有大的變化,萬變不離其宗,掌握大的方法就可以了。

到此這篇關於Pandas出現KeyError的問題解決及分析的文章就介紹到這了,更多相關Pandas KeyError內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com