6

我正在尝试将数据从 FSharp.Data.CsvProvider 传递到 Deedle.Frame。

我几乎是 F# 的新手,我需要将一些 CSV 文件从文化“it-IT”转换为“en-US”,这样我才能使用这些数据。

我找到了 Deedle,我想学习如何使用它,但我无法直接从 Deedle 中的 CSV 文件转换数据(至少是 F# 交互式打印的)。

我注意到 CsvProvider 进行了转换,但经过几天的尝试,我无法传递数据。

4

1 回答 1

5

我相信 Deedle 应该能够处理使用非美国文化的 CSV 文件:

let frame = Frame.ReadCsv("C:\\test.csv", culture="it-IT")

也就是说,如果您出于某种原因想要使用 CSV 类型提供程序,您可以使用:

let cs = new CsvProvider<"C:/data/fb.csv">()

cs.Rows
|> Frame.ofRecords
|> Frame.indexColsWith cs.Headers.Value

这使用Frame.ofRecords它从任何 .NET 集合创建数据框并将对象的属性扩展为列。CSV 提供程序将数据表示为元组,因此这不会正确命名标题 - 但该Frame.indexColsWith函数允许您明确命名标题。

于 2014-06-16T22:01:47.223 回答