Pandas中inf值替換的方法
使用Pandas從MySQL讀取數據,在處理之後再寫回到數據庫時報瞭一個錯誤:
sqlalchemy.exc.ProgrammingError: (MySQLdb._exceptions.ProgrammingError) inf can not be used with MySQL
很明確報錯說明,是因為DataFrame中存在inf數據
出現inf的原因
在數據處理過程中用到瞭除法,並且出現瞭除數為0,導致出現inf,而數據庫不支持寫入該值
說明,np.inf為正無窮,-np.inf為負無窮
解決辦法
將處理過之後的DataFrame中的inf值替換掉,替換代碼:
df = df.replace([np.inf, -np.inf], np.nan)
上述代碼將處理結果中的正無窮和負無窮都替換為空值,最後寫入到數據為中的為null值
PS:為瞭方便後續處理,可以利用numpy,將這些inf值進行替換。
1. 將某1列(series格式)中的 inf 替換為數值。
import numpy as np df['Col'][np.isinf(df['Col'])] = -1
2. 將某1列(series格式)中的 inf 替換為NA值。
import numpy as np df['Col'][np.isinf(df['Col'])] = np.nan
3. 將整個DataFrame中的 inf 替換為數值(空值同理)。#感謝評論區的補充
import numpy as np df.replace(np.inf, -1) #替換正inf為-1 #替換正負inf為NA,加inplace參數 df.replace([np.inf, -np.inf], np.nan, inplace=True)
到此這篇關於Pandas中inf值替換的方法的文章就介紹到這瞭,更多相關Pandas inf值替換內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 詳解pandas映射與數據轉換
- pandas中NaN缺失值的處理方法
- python數學建模之三大模型與十大常用算法詳情
- python數學建模(SciPy+ Numpy+Pandas)
- Python Pandas創建Dataframe數據框的六種方法匯總