是否有任何快速方法将DataFrame的NA值转换为最后观察到的值?
using DataFrames
d = @data [1,NA,5,NA,NA]
df = DataFrame(d=d)
result = filled_with_locf(df)
expected = [1,1,5,5,5]发布于 2016-12-17 11:43:46
如果我们将locf定义为:
locf(v) = v[cummax([i*!isna(v[i]) for i=1:length(v)])]然后,
nona_df = DataFrame(Any[locf(df[c]) for c in names(df)],names(df))和,
julia> nona_df
5×1 DataFrames.DataFrame
│ Row │ d │
├─────┼───┤
│ 1 │ 1 │
│ 2 │ 1 │
│ 3 │ 5 │
│ 4 │ 5 │
│ 5 │ 5 │发布于 2021-07-01 14:58:05
如果你是朱莉娅的新手,不明白为什么Dan Getz's answer会起作用,那就去看看similar thread中的my explanation吧。
发布于 2018-05-19 22:33:38
我写了这个:
这也应该有效,虽然可能需要根据您的具体情况进行调整。这只考虑了数组中的正数。
function locf(x::Array{Float64})
dx = zeros(x)
for i in 2:length(x)-1
if x[i+1] > 0 && x[i] == 0.0
dx[i+1] = x[i+1]
end
if dx[i] == 0
dx[i] = dx[i-1]
end
end
return dx
end
na_locf = locf(dummy_array)https://stackoverflow.com/questions/41196748
复制相似问题