Deedle:如何加载格式错误的CSV文件?

时间:2014-07-23 20:25:47

标签: .net csv f# deedle

我需要在Deedle中加载许多CSV文件。问题是它们格式不正确,因为第一行有8列,但其余数据有7列。 我试图在Deedle中加载它们,将“hasHeader”选项设置为true,将“inferTypes”设置为false并传递模式,但由于第一行,我总是出错。

有一种方法可以说Deedle跳过一行或多行吗?

由于

1 个答案:

答案 0 :(得分:2)

一般而言,根据文档,这应该有效(对于带有三列的csv文件,无论在标题中提供了多少列):

let data = Frame.ReadCsv("sample.csv", hasHeaders=false, schema="R1,R2,R3")

但我相信有一个忽略schema论点的错误。因此,我看到的唯一解决方案是使用Stream并手动忽略第一行文件:

using (File.OpenRead("sample.csv")) ( fun file ->
    while file.ReadByte() <> 10 do ()
    let data = Frame.ReadCsv(stream=file, schema = "R1,R2,R3", hasHeaders=true)
    // ...
)

适用于样本文件:

Row1,Row2,Row3,Row4
1,2,3 
a,b,c