日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Pandas中inf值替換的方法_python

作者:填坑小鐵鍬 ? 更新時間: 2022-10-03 編程語言

使用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)

原文鏈接:https://blog.csdn.net/qq_45225000/article/details/126095881

欄目分類
最近更新