【问题标题】:Proper way to test for NA in Julia DataFrames在 Julia DataFrames 中测试 NA 的正确方法
【发布时间】:2015-01-26 15:52:17
【问题描述】:

在 Julia DataFrames 包中测试 DataFrame 中的值是否为 NA 的正确方法是什么?

到目前为止,我发现typeof(var) == NAtype 有效,但有没有更优雅的方法?

【问题讨论】:

    标签: dataframe julia


    【解决方案1】:

    为此使用 typeof(var) == NAtype 很尴尬,特别是因为它没有矢量化。

    测试NA 值的规范方法是使用称为isna 的(矢量化)函数。

    示例

    让我们在B 列中生成一个带有一些NA 值的玩具DataFrame:

    julia> using DataFrames
    
    julia> df = DataFrame(A = 1:10, B = 2:2:20)
    10x2 DataFrame
    | Row | A  | B  |
    |-----|----|----|
    | 1   | 1  | 2  |
    | 2   | 2  | 4  |
    | 3   | 3  | 6  |
    | 4   | 4  | 8  |
    | 5   | 5  | 10 |
    | 6   | 6  | 12 |
    | 7   | 7  | 14 |
    | 8   | 8  | 16 |
    | 9   | 9  | 18 |
    | 10  | 10 | 20 |
    
    julia> df[[1,4,8],symbol("B")] = NA
    NA
    
    julia> df
    10x2 DataFrame
    | Row | A  | B  |
    |-----|----|----|
    | 1   | 1  | NA |
    | 2   | 2  | 4  |
    | 3   | 3  | 6  |
    | 4   | 4  | NA |
    | 5   | 5  | 10 |
    | 6   | 6  | 12 |
    | 7   | 7  | 14 |
    | 8   | 8  | NA |
    | 9   | 9  | 18 |
    | 10  | 10 | 20 |
    

    现在让我们假设我们不知道 DataFrame 的内容,然后问例如以下问题:

    B 列是否包含 NA 值?

    typeof 方法不起作用,这里:

    julia> typeof(df[:,symbol("B")]) == NAtype
    false
    

    isna 函数更合适:

    julia> any(isna(df[:,symbol("B")]))
      true
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多