【问题标题】:Julia merging dataframesJulia 合并数据框
【发布时间】:2017-10-24 21:43:24
【问题描述】:

我对朱莉娅很陌生,如果这是一个相当微不足道的问题,我深表歉意。但是我偶然发现了一个我无法解决的问题,因此感谢任何帮助/建议。

我有一个函数,当我运行它时,它会在数据框中返回一组值。大致如下:

(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

【问题讨论】:

  • 仅供参考,等号左侧不需要括号,例如values = f() 有效,并且比(values) = f() 更常用。

标签: dataframe merge julia


【解决方案1】:

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

【讨论】:

  • 如果你将部分DataFrames保存在一个数组中,你可以使用masterDf = vcat(myArray...)
  • 没错,如果 OP 足够关心他的问题以回应我的回答,我将发表评论。
  • [OT] 有时当我提出问题时,我不知道是否回复了令我满意的答案(除了批准/投票).. 一方面,我很受诱惑说“谢谢”,但另一方面,我想我可能会用这种无意义的“评论”来打扰用户..
  • 我认为您不应该回答,而只是将其标记为已回答。但在这种情况下,我要求使用 MWE,因为有很多工具,比如你建议的工具,可以更顺畅地完成 OP 似乎想要的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
相关资源
最近更新 更多