在Julia中阅读csv; CSV.TooManyColumnsError

时间:2019-01-24 08:16:42

标签: pandas csv dataframe julia

在熊猫中,当我们使用函数pandas.read_csv读取csv文件时,可以设置关键字error_bad_lines = False,该关键字允许我们跳过包含太多字段的行并保证返回了DataFrame对象。请参阅文档here

在Julia中,我正在使用CSV.read读取一些数据,但是没有返回任何对象。在documentation之后,我使用CSV.validate来查看问题所在,然后得到CSV.TooManyColumnsError。所以我想知道茱莉亚中是否有一个与大熊猫相似的关键字?更一般而言,克服此错误并获得DataFrame返回的方法是什么?

1 个答案:

答案 0 :(得分:1)

实际上,默认情况下CSV.jl的行为方式是读入数据并删除多余的列。这是一个示例:

julia> using CSV, DataFrames

julia> println(read("x.txt", String))
a,b,c
1,2,3
4,5,6,7,8
1,2
1,2,3


julia> df = CSV.read("x.txt")
4×3 DataFrame
│ Row │ a      │ b      │ c       │
│     │ Int64⍰ │ Int64⍰ │ Int64⍰  │
├─────┼────────┼────────┼─────────┤
│ 1   │ 1      │ 2      │ 3       │
│ 2   │ 4      │ 5      │ 6       │
│ 3   │ 1      │ 2      │ missing │
│ 4   │ 1      │ 2      │ 3       │

简而言之:超长行不会被跳过,而是会被截断。 超短线(如您在示例中看到的)用missing填充。但是在所有情况下,您都应该返回DataFrame对象。

当然CSV.validate应该在第一个无效行上出错:

julia> CSV.validate("x.txt")
ERROR: CSV.TooManyColumnsError("row=2, col=3: expected 3 columns then a newline or EOF; parsed row: '4, 5, 6'")