Julia合并数据帧

时间:2017-10-24 21:43:24

标签: dataframe merge julia

如果这是一个相当微不足道的问题,我对朱莉娅来说是个新人,所以道歉。但是我偶然发现了一个我无法解决的问题,所以感谢任何帮助/建议。

我有一个函数,当我运行它时,它会在数据框中返回一组值。有点像:

(values) = function(data)

但是我在

中运行此功能

[例如见这里] [1]

我在一个循环中运行这个函数,这样每次运行时,我都会得到一组新的值。

for x = 1:5
    (values) = function(data[data[:sub].==[x], :])
end

函数运行后,我想把返回的值放回到具有完全相同列标题的“主”数据框中,并编译每次循环迭代时返回的值。

这看起来非常棘手。我尝试使用append!,如下所述:

https://discourse.julialang.org/t/adding-a-new-row-to-a-dataframe/1331/3

但这不起作用。例如,如果我运行以下命令

(values_1) = function(data[data[:sub].==[1], :])

(values_2) = function(data[data[:sub].==[2], :])

append(values_1, values_2)

此操作失败,并显示以下错误消息:

MethodError: no method matching append!(::Array{Float64,2}, ::Array{Float64,2})
Closest candidates are:
  append!(::PyCall.PyObject, ::Any) at /Users/neil/.julia/v0.5/PyCall/src/PyCall.jl:836
  append!(::Array{T,1}, ::Any) at collections.jl:21
  append!{T}(::PyCall.PyVector{T}, ::Any) at /Users/neil/.julia/v0.5/PyCall/src/conversions.jl:278

 in append!(::DataFrames.DataFrame, ::DataFrames.DataFrame) at /Users/neil/.julia/v0.5/DataFrames/src/dataframe/dataframe.jl:791
 in include_string(::String, ::String) at ./loading.jl:441
 in include_string(::String, ::String) at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?

请注意,每次运行时,函数都会正确返回数据框,这只是导致问题的值的连接。

欣赏任何指针。 n

1 个答案:

答案 0 :(得分:2)

您正在寻找vcat,例如vcat(values_1, values_2)。不过,可能有一种更好的方法可以做你正在做的事情,但如果没有一个MWE'就很难给出具体的建议,即我们可以粘贴到终端的例子,运行并重写。