在我的数据集中,我有一个包含inf
的列。我尝试用100代替它,但得到一个错误TypeError: Cannot compare types 'ndarray(dtype=float64)' and 'str'
。此列中的所有其他值均为数字。
如何将inf
替换为100?
fresult.col1.replace(to_replace=dict(inf='100'), inplace=True)
答案 0 :(得分:3)
您可以np.inf
使用replace
:
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