由CSV提供者使用Frame.ofRecords
返回的行中的Deedle框架,但遗憾的是,它不自动获取列名称,因为CSV提供程序将它们表示为元组 - 因此名称仅为Item1
,Item2
等,匹配th标准.NET元组类型的属性名称。
为了解决这个问题,你可以使用Frame.indexColsWith
它可以让你替换列名:
let headers = match csv.Headers with Some v -> v | _ -> failwith "No headers!"
let df =
csv.Rows
|> Frame.ofRecords
|> Frame.indexColsWith headers
df.SaveCsv(log_dirname+"/new_trades.csv")
您可以指定keyNames
如果要包括行键 - 这些都是在默认情况下只序数,其中例如,您可能不想包含它们:
df.SaveCsv(log_dirname+"/new_trades.csv", includeRowKeys=false)
如果您将数据索引为例如日期是索引,那么你可以使用:
df.SaveCsv(log_dirname+"/new_trades.csv", includeRowKeys=true,keyNames=["Date"])
注意名称keyNames
略有误导性暗示,你需要指定多个名称 - 这是只有当你拥有多层次的指数的情况,但是这有点古怪,很少使用Deedle功能。
我已更新您的问题,以更清楚地表明您使用的是Deedle来保存CSV,而不是Csv类型的提供者。 – mydogisbox