F# 数据从CsvFile中提取列的子集并写入新文件

F# 数据从CsvFile中提取列的子集并写入新文件,f#,f#-data,F#,F# Data,在F#(带有FSharp.Data的问题)中,如何从CsvFile中提取列的子集 例如,假设我有一个csv文件file1.csv: a, b, c, d 1, 2, 3, 4 5, 6, 7, 8 9, 10, 11, 12 如果要读取,只保留列a和b,然后将它们写入新的csv文件。我希望使用类似于Map: let originalCsvFile = CsvFile.Load("file1.csv") let subset = originalCsvFile.Map(fun row ->

在F#(带有FSharp.Data的问题)中,如何从
CsvFile
中提取列的子集

例如,假设我有一个csv文件
file1.csv

a, b, c, d
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
如果要读取,只保留列
a
b
,然后将它们写入新的csv文件。我希望使用类似于
Map

let originalCsvFile = CsvFile.Load("file1.csv")
let subset = originalCsvFile.Map(fun row -> <get columns a and b>) ... write to file("file2.csv")
让originalCsvFile=CsvFile.Load(“file1.csv”)
让subset=originalCsvFile.Map(有趣的行->)。。。写入文件(“file2.csv”)
但是我不知道我应该使用什么
fun
,也不知道如何作为新文件编写


我可以从类型中看出
fun
应该返回一个
CsvRow
,但我无法得到更多。

CsvProvider支持“内联”模式规范。拥有这两种文件类型后,可以将file1行映射到file2行,创建新的file2实例并将新行保存到文件:

open FSharp.Data

type File1 = CsvProvider<"file1.csv">
type File2 = CsvProvider<"a,b", Schema = "int,int">

let rows =
    File1.Load("file1.csv").Rows
    |> Seq.map(fun r -> File2.Row(r.A, r.B))
let f2 = new File2(rows)
f2.Save("file2.csv")
打开FSharp.Data
类型File1=CsvProvider
类型File2=CsvProvider
让争吵=
File1.Load(“File1.csv”).行
|>序列图(趣味r->File2.行(r.A,r.B))
设f2=新文件2(行)
f2.保存(“file2.csv”)

一个最小的可复制示例将有助于人们回答问题。请查看如何从加载的CSV文件中提取数据的示例。我认为,如果您用添加的新澄清再次发布问题,那么它将不会再次关闭-您添加了足够的详细信息,现在您的问题已经清楚了(但是,唉,我无法回答封闭式问题…)重新开放这一个缺少最后一次投票嗯,希望在某个时候重新开放这一个…我们得到了投票支持。