【问题标题】:DataFrame to DataFrameRow conversion (Julia)DataFrame 到 DataFrameRow 的转换 (Julia)
【发布时间】:2021-11-04 00:53:01
【问题描述】:

我正在使用Pingouin.jl 来测试正常性。

在他们的docs 中,我们有

dataset = Pingouin.read_dataset("mediation")
Pingouin.normality(dataset, method="jarque_bera")

对于数据集中的每个name,它应该返回一个DataFrame 正常truefalse

目前,此广播已弃用,我无法将每个唯一列输出(正在工作并输出一个 DataFrame)的结果连接到一个 DataFrame 中。

所以,我到目前为止所拥有的。

function var_norm(df)
  norm = DataFrame([])
  for i in 1:1:length(names(df))
        push!(norm, Pingouin.normality(df[!,names(df)[i]], method="jarque_bera"))
  end
  return norm
end

我得到的错误:

julia> push!(norm, Pingouin.normality(df[!,names(df)[1]], method="jarque_bera"))
ERROR: ArgumentError: `push!` does not allow passing collections of type DataFrame to be pushed into a DataFrame. Only `Tuple`, `AbstractArray`, `AbstractDict`, `DataFrameRow` and `NamedTuple` are allowed.
Stacktrace:
 [1] push!(df::DataFrame, row::DataFrame; promote::Bool)
   @ DataFrames ~/.julia/packages/DataFrames/vuMM8/src/dataframe/dataframe.jl:1603
 [2] push!(df::DataFrame, row::DataFrame)
   @ DataFrames ~/.julia/packages/DataFrames/vuMM8/src/dataframe/dataframe.jl:1601
 [3] top-level scope
   @ REPL[163]:1

编辑push! 函数在我的第一个版本的帖子中没有正确编写。但是,更改后错误仍然存​​在。如何将 Pingouin 中 DataFrame 类型的输出重新格式化为 DataFrameRow

【问题讨论】:

  • 我以前没有使用过Pingouin,但是您可能以错误的方式使用push! 的参数,因为我看到您正试图将其分配给norm。如果您写push!(norm, ...),它将就地修改norm
  • 我改了;但是,问题仍然相同。基本上,将DataFrame 类型转换为DataFrameRow
  • 你能试试推only(Pingouin.normality(…))吗?如果Pengouin.normality 返回一个只有一行的数据帧,only 应该返回该行,从而允许您推入DataFrame
  • 如果它没有返回一行,你会想要推送eachrow Pengouin.normality 返回的内容(在另一个for 循环中,或使用foreach
  • 请发表评论,以便我接受您的回答。这是正确的。我刚刚测试过了!谢谢。

标签: dataframe for-loop julia pingouin


【解决方案1】:

由于Pengouin.normality 返回DataFrame,您将不得不迭代其结果并逐个推送:

df = Pengouin.normality(…)
for row in eachrow(df)
    push!(norms, row)
end

如果您确定 Pengouin.normality 返回的 DataFrame 正好只有一行,您可以简单地编写

push!(norms, only(Pengouin.normality(…)))

【讨论】:

    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 2020-12-10
    相关资源
    最近更新 更多