将NaN值替换为“INF”

2024-09-29 21:58:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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

下面是一段代码:

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

Tags: 数据代码dataframepandasdf整数nannull
2条回答

通过具有np.inf值的布尔掩码使用^{}

df = pd.DataFrame({
        'A':list('abcdef'),
         'mtbur':[np.nan,5,4,5,np.nan,np.nan],
         'nur':[0,0,9,0,0,3],
         'col':[np.nan] * 6,

})
mask = (df.mtbur.isnull()) & (df.nur==0)
df.loc[mask] = df.loc[mask].fillna(np.inf)
print (df)
   A  mtbur  nur  col
0  a    inf    0  inf
1  b    5.0    0  NaN
2  c    4.0    9  NaN
3  d    5.0    0  NaN
4  e    inf    0  inf
5  f    NaN    3  NaN

对于“仅替换某些列”:

mask = (df.mtbur.isnull()) & (df.nur==0)
cols = ['mtbur','A']
df.loc[mask, cols] = df.loc[mask, cols].fillna(np.inf)
print (df)
   A  mtbur  nur  col
0  a    inf    0  NaN
1  b    5.0    0  NaN
2  c    4.0    9  NaN
3  d    5.0    0  NaN
4  e    inf    0  NaN
5  f    NaN    3  NaN

我会使用np.inf

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

使用^{}^{}

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)

相关问题 更多 >

    热门问题