I want to replace number 3 instead of all 'nan' in array. this is my code:
train= train.replace("nan",int(3))
But nothing changes in my array. Could u please guide me?
I want to replace number 3 instead of all 'nan' in array. this is my code:
train= train.replace("nan",int(3))
But nothing changes in my array. Could u please guide me?
>>> import math
>>> train = [10, float('NaN'), 20, float('NaN'), 30]
>>> train = [3 if math.isnan(x) else x for x in train]
>>> train
[10, 3, 20, 3, 30]
You can use np.isnan
:
import numpy as np
train = np.array([2, 4, 4, 8, 32, np.NaN, 12, np.NaN])
train[np.isnan(train)]=3
train
Output:
array([ 2., 4., 4., 8., 32., 3., 12., 3.])
>>> import math
>>> train = [10, float('NaN'), 20, float('NaN'), 30]
>>> train = [3 if math.isnan(x) else x for x in train]
>>> train
[10, 3, 20, 3, 30]
This code changes all nan
to 3
:
y = np.nan_to_num(x) + np.isnan(x)*3
This code changes all 3
to nan
:
y = x*(x!=3) + 0/(x!=3)
These methods only work with numpy arrays. Please note that np.nan_to_num(x)
always changes nan
to 0
.
The following works with floats, but could not quickly make it with integers... Terveisin Markus
import numpy as np
a=np.array([1,2,3,np.nan])
b=np.nan_to_num(a,nan=3)
print(f"a: {a}")
print(f"b: {b}")
a: [ 1. 2. 3. nan]
b: [1. 2. 3. 3.]
© 2022 - 2024 — McMap. All rights reserved.
print(type(train))
return? Neither lists nor numpy ndarrays have areplace
method, so I'm not sure why you're not getting an AttributeError. Istrain
a pandas Series? – Lipchitztrain
were a pandas dataframe or Series, there's afillna()
method that handles this sort of situation. – Genevieve