dataframe - 如何使用 Julia、Pluto.jl 和 PlutoUI.jl 的 FilePicker 元素读取上传的 CSV 文件
问题描述
我正在尝试使用 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 中的东西?
我尝试过的一些事情:
如果我执行csv 文件保存成功,但如果没有在每行之间获取空行数据(不是什么大问题)和错误write(csv_path, user_csv["data"])
,我就无法读回文件。我可以用于第二个问题,但是数据变成了炒鸡蛋,无法使用。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 │
推荐阅读
- php - 如何使用 NelmioApiDocBundle 为 Symfony 中的唯一区域设置 @SWG\Info 注释
- ios - Visual Studio:iOS 模拟器从今天开始消失
- c++ - 好友功能无法访问私人会员
- java - 对数组进行排序时,如果值相同,如何分配共享序号后缀?
- c++ - vector 的 emplace_back - 作为构造函数参数的向量
- google-apps-script - 如何将 Google Workspace Marketplace 插件添加到应用程序启动器?
- jquery - 尝试使用 django 和 AJAX 实现实时搜索
- python - 访问 3d pandas 数据框中的多列
- android - 在不同片段之间导航时,BottomSheet 不隐藏
- hashicorp-vault - Hashicorp Vault > token_duration 是什么意思以及如何设置它?