首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >朱莉娅DataFrame用LOCF填充NA

朱莉娅DataFrame用LOCF填充NA
EN

Stack Overflow用户
提问于 2016-12-17 08:22:59
回答 4查看 721关注 0票数 4

是否有任何快速方法将DataFrame的NA值转换为最后观察到的值?

代码语言:javascript
复制
using DataFrames

d = @data [1,NA,5,NA,NA]
df = DataFrame(d=d)

result = filled_with_locf(df)

expected = [1,1,5,5,5]
  • LOCF =结转的最后观察
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-12-17 11:43:46

如果我们将locf定义为:

代码语言:javascript
复制
locf(v) = v[cummax([i*!isna(v[i]) for i=1:length(v)])]

然后,

代码语言:javascript
复制
nona_df = DataFrame(Any[locf(df[c]) for c in names(df)],names(df))

和,

代码语言:javascript
复制
julia> nona_df
5×1 DataFrames.DataFrame
│ Row │ d │
├─────┼───┤
│ 1   │ 1 │
│ 2   │ 1 │
│ 3   │ 5 │
│ 4   │ 5 │
│ 5   │ 5 │
票数 3
EN

Stack Overflow用户

发布于 2021-07-01 14:58:05

如果你是朱莉娅的新手,不明白为什么Dan Getz's answer会起作用,那就去看看similar thread中的my explanation吧。

票数 1
EN

Stack Overflow用户

发布于 2018-05-19 22:33:38

我写了这个:

这也应该有效,虽然可能需要根据您的具体情况进行调整。这只考虑了数组中的正数。

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41196748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档