[英]Replace NaN values by 'INF'
我正在尝试过滤Pandas dataframe
几行并替换过滤器标识的 NaN 值,以将它们替换为“无限”值。 基本上 loc[] 过滤掉列 nur=0 和 mtbur 为空的行(mtbur 和 nur 是整数)。 但是,我知道无限值在数据集中看起来并不干净。 因此,我该怎么做才能使我的查询工作,您建议我添加什么类似于“无限”值的内容?
这是一段代码:
df.loc[(df.mtbur.isnull()) & (df.nur==0)].fillna(value='INF')
我会使用np.inf
。
import numpy as np
m_inf = (df.mtbur.isnull()) & (df.nur==0)
使用DataFrame.mask
或DataFrame.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)
使用DataFrame.fillna
用布尔面膜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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.