在我的数据集中,我有一列包含 inf
。我尝试将其替换为 100,但出现错误 TypeError: Cannot compare types 'ndarray(dtype=float64)' and 'str'
。此列中的所有其他值都是数字。
如何用 100 替换 inf
?
fresult.col1.replace(to_replace=dict(inf='100'), inplace=True)
您可以使用 replace
通过 np.inf
:
fresult = pd.DataFrame({'col1': [1, np.inf]})
print (fresult)
col1
0 1.000000
1 inf
fresult.col1 = fresult.col1.replace(np.inf, 100)
print (fresult)
col1
0 1.0
1 100.0
如果某些值无法转换to_numeric
添加参数 errors='coerce'
- 将其替换为 NaN
。
fresult = pd.DataFrame({'col1': [1, np.inf, 'a', 'inf']})
print (fresult)
col1
0 1
1 inf <- numpy.inf
2 a
3 inf <-text inf
fresult.col1 = pd.to_numeric(fresult.col1, errors='coerce').replace(np.inf, 100)
print (fresult)
col1
0 1.0
1 100.0
2 NaN
3 100.0
如果只有文本 inf
:
fresult = pd.DataFrame({'col1': [1, np.inf, 'inf']})
print (fresult)
col1
0 1
1 inf
2 inf
print (type(fresult.col1.iat[1]))
<class 'float'>
print (type(fresult.col1.iat[2]))
<class 'str'>
fresult.col1 = pd.to_numeric(fresult.col1).replace(np.inf, 100)
print (fresult)
col1
0 1.0
1 100.0
2 100.0
我是一名优秀的程序员,十分优秀!