如何用100替换inf?

时间:2017-02-10 09:27:21

标签: python pandas

在我的数据集中,我有一个包含inf的列。我尝试用100代替它,但得到一个错误TypeError: Cannot compare types 'ndarray(dtype=float64)' and 'str'。此列中的所有其他值均为数字。

如何将inf替换为100?

fresult.col1.replace(to_replace=dict(inf='100'), inplace=True)

1 个答案:

答案 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