F # CSV - для каждой строки создайте массив из столбцов данных - PullRequest
0 голосов
/ 26 мая 2018

У меня есть CSV-файл, где первый столбец - это заголовок, а следующие более 700 столбцов - это некоторые данные типа int.

Title D1 D2 D3 D4 .. D700
Name1  0  1  7  5     48 

Я пытаюсь использовать CsvProvider, чтобы прочитать файл, а затем преобразовать данные в мой пользовательский тип

type DigitRecord = { Title:string; Digits:int[] }

Проблема в том, что я не знаю, как поместить все данные столбца (кроме первого с заголовком) в массив int [].

 let dataRecords = 
    CSV.Rows 
    |> Seq.map (fun record -> {Title = record.Title; Digits = ???})

Я хочу получить запись с Title = Name1 и Digits = [| 0,1,7,5 ... 48 |]

Я новичок в F #,Буду благодарен за любую помощь!

1 Ответ

0 голосов
/ 26 мая 2018

Я думаю, что самый простой способ - использовать CsvParser так:

let readData (path : string) seps =
    CsvFile.Load(path, seps).Rows
    |> Seq.map
        (fun row -> row.Columns.[0], row.Columns |> Array.skip 1 |> Array.map int)
    |> Seq.map
        (fun (title, digits) -> {Title = title; Digits = digits})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...