在熊猫中,当我们使用函数pandas.read_csv
读取csv文件时,可以设置关键字error_bad_lines = False
,该关键字允许我们跳过包含太多字段的行并保证返回了DataFrame对象。请参阅文档here。
在Julia中,我正在使用CSV.read
读取一些数据,但是没有返回任何对象。在documentation之后,我使用CSV.validate
来查看问题所在,然后得到CSV.TooManyColumnsError
。所以我想知道茱莉亚中是否有一个与大熊猫相似的关键字?更一般而言,克服此错误并获得DataFrame返回的方法是什么?
答案 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'")