如何在julia dataframe中获取列的数据类型
如何获取julia中所有列和特定列的数据类型。具体来说,在julia中,pandas与df.dtypes的等价物是什么 比如说,, 我有一个类似下面的df如何在julia dataframe中获取列的数据类型,julia,Julia,如何获取julia中所有列和特定列的数据类型。具体来说,在julia中,pandas与df.dtypes的等价物是什么 比如说,, 我有一个类似下面的df │ Row │ Id │ name │ item location │ │ │ Int64 │ String │ String │ ├─────┼───────┼────────┼───────────────┤ │ 1 │ 1 │ A │ xyz │ │ 2 │
│ Row │ Id │ name │ item location │
│ │ Int64 │ String │ String │
├─────┼───────┼────────┼───────────────┤
│ 1 │ 1 │ A │ xyz │
│ 2 │ 2 │ B │ abc │
│ 3 │ 3 │ C │ def │
│ 4 │ 4 │ D │ ghi │
│ 5 │ 5 │ E │ xyz │
│ 6 │ 6 │ F │ abc │
│ 7 │ 7 │ G │ def │
│ 8 │ 8 │ H │ ghi │
│ 9 │ 9 │ I │ xyz │
│ 10 │ 10 │ J │ abc │
预期产出:
{'id': Int64, 'name': String, 'item location': String}
如何获取数据类型,即,
Int64│ 一串│ String
在Julia?中,您指定了两种不同的预期输出,因此我在这里演示如何获得这两种输出:
julia> df = DataFrame("Id" => 1, "name" => "A", "item_location" => "xyz")
1×3 DataFrame
│ Row │ Id │ name │ item_location │
│ │ Int64 │ String │ String │
├─────┼───────┼────────┼───────────────┤
│ 1 │ 1 │ A │ xyz │
julia> eltype.(eachcol(df))
3-element Array{DataType,1}:
Int64
String
String
julia> Dict(names(df) .=> eltype.(eachcol(df)))
Dict{String,DataType} with 3 entries:
"Id" => Int64
"name" => String
"item_location" => String
此外,如果您想将结果存储在数据框中而不是Dict中,您可以编写(请参见mapcols
文档):
如果您想让一个名为tuple的存储此信息,请编写(Tables.columntable
的文档如下所示):
(在本例中,请注意,对于非常宽的表,这可能会有一些额外的编译成本,因为每次调用它时,您可能会得到一种新类型的命名为tuple
)您还可以使用描述(df)
,这是了解数据帧中列的一个通用工具。这正是我想要的。如果您添加官方文档的链接,那就太好了。好处是基本解决方案不是DataFrames.jl特定的。它只是应用于数据帧的Julia Base。这在朱莉娅身上很常见,因为一切都安排得很好。我们只使用广播(the
)、eltype
(从Base开始)和eachcol
(也从Base开始)mapcols
和表格。columntable
是特定于包的-我将为它们添加指向文档的链接。一般来说,这与Pandas的理念截然不同,Pandas将大部分功能打包到一个包中。在Julia中,包可以有更有限的API,因为多个分派可以处理组合部分。哦,这真是太好了。我是一个天真的学习者。因为我是朱莉娅的新朋友,如果我的问题对朱莉娅社区来说是愚蠢的,那么对不起。相反,这些都是很好的问题。对于刚接触朱莉娅的人来说,要知道的关键是:1)你应该好好学习基本朱莉娅,2)大多数软件包都会尝试最大限度地利用这些知识。从长远来看(在学习基础之后),这意味着当你开始使用一个新软件包时,你需要学习的东西要少得多,而且你可以期待两个完全不相关的软件包在开箱即用、没有任何粘合界面的情况下“一起工作”。一个很好的例子是混合微分方程和深度学习包;每个列和数据类型中的变量名称、平均值、最小值、中值、最大值、nunique和nmissing。干得好
julia> mapcols(eltype, df)
1×3 DataFrame
│ Row │ Id │ name │ item_location │
│ │ DataType │ DataType │ DataType │
├─────┼──────────┼──────────┼───────────────┤
│ 1 │ Int64 │ String │ String │
julia> map(eltype, Tables.columntable(df))
(Id = Int64, name = String, item_location = String)