由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