首页 > 解决方案 > 用“INF”替换 NaN 值

问题描述

我正在尝试过滤我的几行Pandas dataframe并替换过滤器标识的 NaN 值,以将它们替换为“无限”值。基本上 loc[] 过滤掉列 nur=0 和 mtbur 为空的行(mtbur 和 nur 是整数)。但是,我知道无限值在数据集中看起来并不干净。因此,我可以做些什么来使我的查询工作,你会建议我添加什么类似于“无限”值?

这是一段代码:

df.loc[(df.mtbur.isnull()) & (df.nur==0)].fillna(value='INF')

标签: pythonpandas

解决方案


我会用np.inf.

import numpy as np
m_inf = (df.mtbur.isnull()) & (df.nur==0)

使用DataFrame.maskDataFrame.where

df = df.mask(m_inf,np.inf)
#df = df.where(~m_inf,np.inf)

如果要选择特定列:

cols = [list_of_your_columns]
df[cols] = df[cols].mask(m_inf,np.inf)

推荐阅读