如何在 Julia 中定义一个空的 DataFrame 数组?

JPi*_*JPi 2 arrays initialization defaultifempty dataframe julia

我想生成一个空的数据帧数组,稍后将在代码中填充,但我还没有想出如何去做。任何帮助,将不胜感激!

我尝试了定义空数组的标准方法。

julia> df = Array{DataFrame}(undef,10)
10-element Array{DataFrame,1}:
 #undef
 #undef
 #undef
 #undef
 #undef
 #undef
 #undef
 #undef
 #undef
 #undef

julia> println(typeof(df[1]))
ERROR: UndefRefError: access to undefined reference
Stacktrace:
 [1] getindex(::Array{DataFrame,1}, ::Int64) at ./array.jl:729
 [2] top-level scope at none:0
Run Code Online (Sandbox Code Playgroud)

我希望 typeof(df[1]) 说 DataFrame,但它失败并显示错误消息。

Bog*_*ski 9

尝试:

df_vector = [DataFrame() for _ in 1:10]
Run Code Online (Sandbox Code Playgroud)

或者

map(_ -> DataFrame(), 1:10)
Run Code Online (Sandbox Code Playgroud)


Tas*_*nou 5

你所拥有的是正确的,因为你对“空”的理解是这样的。获得第一个结果后,您可以继续像往常一样用数据框填充它。它确实是一个 DataFrame 数组,因为如果您尝试为其元素分配任何其他类型,则会出现错误。

请注意,“数据帧的空数组”“空数据帧的(非空)数组”不同。

如果您真正想要的是后者,那么 Bogumil 的答案就是要走的路。

  • “DataFrame 的空数组”是“DataFrame[]”,因为这就是“isempty”函数中“空”的含义。但我认为这不是@JPi 想要的。现在我们区分了“未初始化的‘DataFrame’数组”和“空‘DataFrame’数组”,正如 @Tasos 正确指出的那样。现在的关键是,您可能希望所有“DataFrame”都是不同的对象(而不是同一对象重复多次)——这就是我的解决方案所做的。您可以使用 fill(DataFrame(), 10) 重复相同的 DataFrame 10 次,但这可能不是您想要的。 (3认同)