2017-02-10 16 views
3

私のデータセットには、infを含むカラムがあります。私はそれを100に置き換えようとしますが、エラーはTypeError: Cannot compare types 'ndarray(dtype=float64)' and 'str'になります。この列の他の値はすべて数値です。infを100で置き換える方法は?

infを100に置き換えるにはどうすればよいですか?

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

答えて

3

あなたはnp.infreplaceを使用することができます。

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 
+0

は、なぜあなたは 'NaN'として最初の行をHAEのですか? – Dinosaurius

+0

「NaN」も置き換えないでください。) – jezrael

+0

しかし、それを削除する必要はありません。 – jezrael

関連する問題