首页 > 解决方案 > 错误:未找到参数名称,尝试了 df.Data 但它不起作用??(朱莉娅)

问题描述

我正在使用列标题为“数据”的数据框,但是当我这样做时

df.Data
ERROR: ArgumentError: column name :Data not found in the data frame
Stacktrace:
 [1] lookupname
   @ C:\Users\jerem\.julia\packages\DataFrames\S3ZFo\src\other\index.jl:250 [inlined]
 [2] getindex

@ C:\Users\jerem.julia\packages\DataFrames\S3ZFo\src\other\index.jl:259 [内联] [3] getindex(df::DataFrame, #unused#::typeof(!), col_ind: :Symbol) @DataFrames C:\Users\jerem.julia\packages\DataFrames\S3ZFo\src\dataframe\dataframe.jl:361 [4] getproperty(df::DataFrame, col_ind::Symbol) @DataFrames C:\Users \jerem.julia\packages\DataFrames\S3ZFo\src\abstractdataframe\abstractdataframe.jl:295 [5] 顶级范围@ REPL[56]:1

但这就是全名...

这就是我的意思。

我一直遇到这个问题。谢谢!

在此处输入图像描述

标签: dataframestatisticsjulia

解决方案


首先,我建议您将 DataFrames.jl 安装更新到最新版本 1.2.2。您使用的版本已超过一年。很可能您没有使用包的每个项目配置,并且遇到了本文中解释的问题

现在-您的问题是您的数据中没有四列,而是一列,因此您需要将其拆分为四列。您可以这样做(请注意,我在这里写的内容可能不适用于您的 DataFrames.jl 版本,因为它很旧 - 但在您更新到 DataFrames.jl 1.2.2 后它会起作用):

julia> using DataFrames

julia> df = DataFrame("Year Data Min Max" => ["1979 3.1 3.0 3.2", "1980 4.1 4.0 4.2"])
2×1 DataFrame
 Row │ Year Data Min Max
     │ String
─────┼───────────────────
   1 │ 1979 3.1 3.0 3.2
   2 │ 1980 4.1 4.0 4.2

julia> df2 = select(df, 1 => ByRow(x -> split(x, " ")) => [:Year, :Data, :Min, :Max])
2×4 DataFrame
 Row │ Year       Data       Min        Max
     │ SubStrin…  SubStrin…  SubStrin…  SubStrin…
─────┼────────────────────────────────────────────
   1 │ 1979       3.1        3.0        3.2
   2 │ 1980       4.1        4.0        4.2

julia> df3 = select(df2,
                    1 => ByRow(x -> parse(Int, x)),
                    2:4 .=> ByRow(x -> parse(Float64, x)),
                    renamecols=false)
2×4 DataFrame
 Row │ Year   Data     Min      Max
     │ Int64  Float64  Float64  Float64
─────┼──────────────────────────────────
   1 │  1979      3.1      3.0      3.2
   2 │  1980      4.1      4.0      4.2

julia> df3.Data
2-element Vector{Float64}:
 3.1
 4.1

我分两步执行了转换,以便更容易理解


推荐阅读