我有一个数组的形式(这里简化):[1,NaN,NaN,7,NaN,27]
。我想用在已知值之间均等间隔的值替换NaN's
,因此上述数组将变为[1,3,5,7,17,27]
。有没有一种快速的方法(不使用某些for循环)?谢谢!
答案 0 :(得分:2)
Pandas dataframe.interpolate()函数基本上用于填充数据帧或系列中的NA值
import pandas as pd
import numpy as np
arr = [ 1, np.NaN, np.NaN, 7, np.NaN, 27]
//converting array in series
print(pd.Series(arr).interpolate(method = 'linear', limit_direction = 'forward'))
参数
method ='linear':忽略索引,并将值等距地对待。
limit_direction :{'forward','backward','both'},默认'forward'
如果指定了限制,则将沿该方向填充连续的NaN。
限制:整数,可选
要填充的连续NaN的最大数量。必须大于0。
print(pd.Series(arr).interpolate(method = 'linear', limit_direction = 'forward', limit = 1))
#5 won't get printed
print(pd.Series(arr).interpolate(method = 'linear', limit_direction = 'backward', limit = 1))
#3 won't get printed
您可以根据需要尝试不同的变体。
答案 1 :(得分:1)
如果可能,请使用pandas
创建Series
,然后使用Series.interpolate
:
import pandas as pd
import numpy as np
arr = [1,np.NaN,np.NaN,7,np.NaN,27]
print (pd.Series(arr).interpolate().values)
[ 1. 3. 5. 7. 17. 27.]