Pandas中inf值替換的方法
使用Pandas從MySQL讀取數(shù)據(jù),在處理之后再寫回到數(shù)據(jù)庫時報了一個錯誤:
sqlalchemy.exc.ProgrammingError: (MySQLdb._exceptions.ProgrammingError) inf can not be used with MySQL
很明確報錯說明,是因為DataFrame中存在inf數(shù)據(jù)
出現(xiàn)inf的原因
在數(shù)據(jù)處理過程中用到了除法,并且出現(xiàn)了除數(shù)為0,導致出現(xiàn)inf,而數(shù)據(jù)庫不支持寫入該值
說明,np.inf為正無窮,-np.inf為負無窮
解決辦法
將處理過之后的DataFrame中的inf值替換掉,替換代碼:
df = df.replace([np.inf, -np.inf], np.nan)
上述代碼將處理結果中的正無窮和負無窮都替換為空值,最后寫入到數(shù)據(jù)為中的為null值
PS:為了方便后續(xù)處理,可以利用numpy,將這些inf值進行替換。
1. 將某1列(series格式)中的 inf 替換為數(shù)值。
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 替換為數(shù)值(空值同理)。#感謝評論區(qū)的補充
import numpy as np df.replace(np.inf, -1) #替換正inf為-1 #替換正負inf為NA,加inplace參數(shù) df.replace([np.inf, -np.inf], np.nan, inplace=True)
到此這篇關于Pandas中inf值替換的方法的文章就介紹到這了,更多相關Pandas inf值替換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
合并百度影音的離線數(shù)據(jù)( with python 2.3)
這篇文章主要介紹了合并百度影音的離線數(shù)據(jù)( with python 2.3)的相關資料2015-08-08
Python使用pandas實現(xiàn)對數(shù)據(jù)進行特定排序
在數(shù)據(jù)分析和處理過程中,排序是一項常見而重要的操作,本文將詳細介紹如何利用pandas對數(shù)據(jù)進行特定排序,包括基本排序、多列排序、自定義排序規(guī)則等方面的內(nèi)容,需要的可以了解下2024-03-03
Python使用PyCrypto實現(xiàn)AES加密功能示例
這篇文章主要介紹了Python使用PyCrypto實現(xiàn)AES加密功能,結合具體實例形式分析了PyCrypto實現(xiàn)AES加密的操作步驟與相關實現(xiàn)技巧,需要的朋友可以參考下2017-05-05

