【问题标题】:Export an array to a CSV file in Julia在 Julia 中将数组导出到 CSV 文件
【发布时间】:2019-03-24 19:26:31
【问题描述】:

给定一个 (2d) 数组 A 如何使用 Julia 将其导出为 CSV 文件?

回到旧版本,我会写

writecsv( "FileName.csv",  A);

这会将数组 A 转储到给定文件中。但是,这在 >= 1.0 版本中不起作用。经过一番谷歌搜索,我也尝试使用 CSV 模块做

f = open("test.csv", "a+");
CSV.write(f, A; delim = ',')

但这会引发错误

ERROR: ArgumentError: no default `Tables.rows` implementation for type: Array{Int64,2}

(我的数组 A 是 Int64 类型)。

对于这个最琐碎的问题,有人有可行的解决方案吗?

【问题讨论】:

    标签: arrays julia export-to-csv


    【解决方案1】:

    需要加载DelimitedFiles模块,现在只支持writedlm功能。

    因此,为了将数组写入 CSV 文件,请使用:

    julia> using DelimitedFiles
    
    julia> writedlm( "FileName.csv",  A, ',')
    

    要使用 CSV.jl 包获得相同的结果,请使用:

    julia> using CSV, Tables
    
    julia> CSV.write("FileName.csv",  Tables.table(A), writeheader=false)
    

    因为Matrix 不支持Tables.jl 接口,所以你需要用Tables.table 包装它。

    【讨论】:

    • 不确定这是否总是需要,但请注意您可能必须添加 :auto 参数,如 DataFrame(A, :auto)。 Bogumił,这是较新的做法吗?谢谢。引用:“Matrix 中的DataFrame 构造函数需要传递 :auto 作为第二个参数来自动生成列名:DataFrame(matrix, :auto)
    • 是的,现在需要:auto。我用当前推荐的做法更新了答案 - Tables.table 不会复制。
    猜你喜欢
    • 2021-07-01
    • 2021-01-23
    • 2020-02-02
    • 2016-02-24
    • 2013-02-28
    • 2018-04-15
    • 2013-12-21
    • 2019-02-14
    • 2016-04-12
    相关资源
    最近更新 更多