我正在尝试使用PlutoUI库的Filepicker元素
md""" Upload a Comma Separated Values (.csv) file to use: $(@bind user_csv FilePicker()) """
允许用户上传CSV文件进行处理。不幸的是,没有检测到数据类型,并且将数据表示为一维Int64数组:
Dict("name"=>"mtg_binder.csv", "data"=>Int64[ 81 117 97 110 116 105 116 121 44 78 97 109 101 44 83 105 109 112 108 101 95 78 97 109 101 44 83 101 116 44 67 97 114 100 95 78 117 109 98 101 53 52 51 46 49 57 34 44 13 10], "type"=>"")
因此,如何处理Int64数组/将其转换为可以推入Dataframe的对象?
我尝试过的一些事情:
如果执行write(csv_path, user_csv["data"])
csv文件,则保存成功,但是如果没有CSV.File(open(read, csv_path)) |> DataFrame;
在每一行之间都没有数据(没有什么大不了)和ArgumentError: Symbol name may not contain \0
错误的空行,我将无法读取文件。我可以使用normalizenames=true
第二个问题,但是数据变得混乱不堪,无法使用。
我还尝试过使用StringEncodings编码为UTF-8和UTF-16,但没有运气-它仍然是鸡蛋。
救命?
可以在您的用例中使用吗?
UInt8.(user_csv["data"]) |> IOBuffer |> CSV.File |> DataFrame
通过将Int64
s转换为字节(UInt8
)可以起作用。从那里,用户数据可以放入IOBuffer
,然后可以馈送到CSV解析器。
您发布的数据似乎已被截断,因此我无法对其进行测试。但是在组成的数据(包括UTF8字符)上,这似乎在我的系统上有效。这是冥王星以外的示例:
julia> d = [207,128,44,32,98,10,49,44,32,50,10]
11-element Array{Int64,1}:
207
128
44
...
julia> using CSV, DataFrames
julia> UInt8.(d) |> IOBuffer |> CSV.File |> DataFrame
1×2 DataFrame
│ Row │ π │ b │
│ │ Int64 │ Int64 │
├─────┼───────┼───────┤
│ 1 │ 1 │ 2 │
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句