Pandas出現(xiàn)KeyError的問題解決及分析
寫在前面
今天在用爬蟲及Pandas更新股票日線數(shù)據(jù)的時候發(fā)現(xiàn)KeyError報錯,后面跟了一個DataFrame列索引,一開始以為是索引修改列的值導致的問題,修改為.loc錯誤依然出現(xiàn),后來將列值的內(nèi)容修改方法改為.apply(lambda)問題依然出現(xiàn)。就在百思不得其解時,我發(fā)現(xiàn)了問題所在。。。
報錯詳細信息
主要配置及環(huán)境
- Windows 10 64位
- Python:3.6.8
- Pandas:1.0.3
報錯內(nèi)容
Traceback (most recent call last):
File "E:\py36\lib\site-packages\pandas\core\indexes\base.py", line 2646, in get_loc
return self._engine.get_loc(key)
File "pandas\_libs\index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\hashtable_class_helper.pxi", line 1619, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas\_libs\hashtable_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:\aaaDesktop\test.py", line 34, in <module>
df['turnover'] = df['turnover'] * 100
File "E:\py36\lib\site-packages\pandas\core\frame.py", line 2800, in __getitem__
indexer = self.columns.get_loc(key)
File "E:\py36\lib\site-packages\pandas\core\indexes\base.py", line 2648, in get_loc
return self._engine.get_loc(self._maybe_cast_indexer(key))
File "pandas\_libs\index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\hashtable_class_helper.pxi", line 1619, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas\_libs\hashtable_class_helper.pxi", line 1627, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'turnover'
[Finished in 5.4s]
問題解決
代碼主要流程:
抓取Sina財經(jīng)的日線數(shù)據(jù)接口(有需要者可以私信我了解更多),抓取交易日所有交易的股票數(shù)據(jù),進行數(shù)據(jù)處理、整合為DataFrame并逐行讀取存入CSV文件。
既然不是索引的問題,那就只有一直往上追溯,結(jié)果發(fā)現(xiàn),在 設(shè)置抓取函數(shù)的循環(huán)跳出條件 時,由于各大網(wǎng)站最近在備案&更新,導致空數(shù)據(jù)頁面顯示內(nèi)容變成了一個字符串類型的空列表。。。于是只要將循環(huán)跳出的條件設(shè)置為:
if eval(content) == []:
就可以解決問題了。
舉一反三
由于這次的經(jīng)驗,我發(fā)現(xiàn)在出現(xiàn)KeyError報錯的時候,需要先查看數(shù)據(jù)是不是存在空值,尤其是程序里面有爬蟲代碼的時候,更需要注意。網(wǎng)站經(jīng)常在變,不過基本上沒有大的變化,萬變不離其宗,掌握大的方法就可以了。
到此這篇關(guān)于Pandas出現(xiàn)KeyError的問題解決及分析的文章就介紹到這了,更多相關(guān)Pandas KeyError內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Jupyter Notebook 文件默認目錄的查看以及更改步驟
這篇文章主要介紹了Jupyter Notebook 文件默認目錄的查看以及更改步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Pycharm-community-2020.2.3 社區(qū)版安裝教程圖文詳解
這篇文章主要介紹了Pycharm-community-2020.2.3 社區(qū)版安裝教程圖文詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
conda管理Python虛擬環(huán)境的實現(xiàn)
本文主要介紹了conda管理Python虛擬環(huán)境的實現(xiàn),主要包括使用conda工具創(chuàng)建、查看和刪除Python虛擬環(huán)境,具有一定的參考價值,感興趣的可以了解一下2024-01-01
LyScript實現(xiàn)計算片段Hash并寫出Excel的示例代碼
本案例將學習運用LyScript計算特定程序中特定某些片段的Hash特征值,并通過xlsxwriter這個第三方模塊將計算到的hash值存儲成一個excel表格,感興趣的可以跟隨小編一起學習一下2022-09-09
Python?numpy中np.random.seed()的詳細用法實例
在學習人工智能時,大量的使用了np.random.seed(),利用隨機數(shù)種子,使得每次生成的隨機數(shù)相同,下面這篇文章主要給大家介紹了關(guān)于Python?numpy中np.random.seed()的詳細用法,需要的朋友可以參考下2022-08-08

