Julia DataFrame 行数据类型已更改?

问题描述 投票:0回答:1

我不确定从什么时候开始,但实际上 DataFrame 'Row' 数据类型已经改变了。

■previous
    Row │ id      name     sex      age     ave        
    │   │ Int32  String  String  Int32    Float64                
    │───┼─────────────────────────────────────────────────────────────────
    │⋮ │   ⋮     ⋮       ⋮       ⋮       ⋮
 

■recent   
    Row │ id      name     sex      age     ave     
    │   │ Int32?  String?  String?  Int32?  Float64?               
    │───┼─────────────────────────────────────────────────────────────────
    │⋮ │   ⋮      ⋮        ⋮       ⋮        ⋮    

您可以看到所有“行”数据类型都更改为“?”在它的尾巴上。 在以前的版本中,我可以使用 eltype.(eachcol(df)) 获取行数据类型,因为它们只是 'Int32','String'...... 但在最近的情况下,它们是 Union{Nothing,Int32}、Union{Nothing,String}....,这就是为什么 eltype.(..) 没有给出与以前版本类似的期望数据类型。 我的问题是

1.现在如何获得像以前一样的“Row”数据类型? 我的意思是在 DataFrame 上或通过 eltype() 将 (?) 'Union{Nothing,Int32}' 转换为 'Int32'

2.可选:您知道“Row”数据类型发生变化的原因和原因吗?

非常感谢。

dataframe julia union
1个回答
0
投票

您知道“行”数据类型发生变化的原因以及原因吗?

首先,请仔细检查您的数据不是

Union{Nothing,Int32}
而是
Union{Missing,Int32}

此处 DataFrames.jl 中没有任何更改。您的数据读取过程可能已更改,它现在创建允许其中包含

missing
值的列。

现在如何获得与以前类似的“行”数据类型?

如果要删除列元素类型的

Missing
部分,请执行以下操作:

nonmissingtype.(eltype.(eachcol(df)))
© www.soinside.com 2019 - 2024. All rights reserved.