如何迭代F#中的一条记录,并将数据转换为新记录
我正在尝试使用fsharp解析文件并将其转换为数据模型如何迭代F#中的一条记录,并将数据转换为新记录,f#,F#,我正在尝试使用fsharp解析文件并将其转换为数据模型 let name = 'Ron' let date = '10/6/2020' let rawData = [|{ time = 15 pressure = 50 force = 100}; {time = 16 pressure = 55 force = 110}; {time = 17 pressure = 60 force =
let name = 'Ron'
let date = '10/6/2020'
let rawData =
[|{
time = 15
pressure = 50
force = 100};
{time = 16
pressure = 55
force = 110};
{time = 17
pressure = 60
force = 120
}|]
我希望将数据转换为.csv格式,但我的中间步骤是将其保存在记录中。所需的输出如下所示
name | date | parameter | value
_______________________________________
Ron | 10/6/2020 | time | 15
Ron | 10/6/2020 | pressure | 50
Ron | 10/6/2020 | force | 100
Ron | 10/6/2020 | time | 16
Ron | 10/6/2020 | pressure | 55
Ron | 10/6/2020 | force | 110
Ron | 10/6/2020 | time | 17
Ron | 10/6/2020 | pressure | 60
Ron | 10/6/2020 | force | 120
我知道我需要创建一个新记录,但如何以这种方式添加常量。你的问题并没有很清楚地说明你到底在做什么。但是,如果我想解决这个问题,我可能会使用。给定具有正确缩进的数据:
let name = "Ron"
let date = "10/6/2020"
let rawData =
[| {| time = 15; pressure = 50; force = 100|}
{| time = 16; pressure = 55; force = 110|}
{| time = 17; pressure = 60; force = 120|} |]
通过映射原始数据并创建包含常量和数据本身的元组,可以将其转换为CSV文件。一旦你有了它,你就可以使用记录的将它转换成数据帧。Deedle中的巧妙之处在于expandAllCols
函数,该函数将嵌套记录转换为多列,因此最终的数据框有五列:
let df =
rawData
|> Array.map (fun data -> name, date, data)
|> Frame.ofRecords
|> Frame.expandAllCols 1
|> Frame.indexColsWith ["name";"date";"time";"pressure";"force"]
df.SaveCsv("c:/temp/test.csv", includeRowKeys=false)
使用元组和展开得到的列名很难看,因此我使用indexColsWith
重命名它们,然后我们可以将文件另存为CSV。您的问题并不能很清楚地说明您到底在做什么。但是,如果我想解决这个问题,我可能会使用。给定具有正确缩进的数据:
let name = "Ron"
let date = "10/6/2020"
let rawData =
[| {| time = 15; pressure = 50; force = 100|}
{| time = 16; pressure = 55; force = 110|}
{| time = 17; pressure = 60; force = 120|} |]
通过映射原始数据并创建包含常量和数据本身的元组,可以将其转换为CSV文件。一旦你有了它,你就可以使用记录的将它转换成数据帧。Deedle中的巧妙之处在于expandAllCols
函数,该函数将嵌套记录转换为多列,因此最终的数据框有五列:
let df =
rawData
|> Array.map (fun data -> name, date, data)
|> Frame.ofRecords
|> Frame.expandAllCols 1
|> Frame.indexColsWith ["name";"date";"time";"pressure";"force"]
df.SaveCsv("c:/temp/test.csv", includeRowKeys=false)
使用元组和展开得到的列名很难看,因此我使用indexColsWith
重命名它们,然后我们可以将文件保存为CSV。我无法使该代码正常工作,我得到testing.fsx(124,1):错误FS0010:运行|>Frame.indexColsWith[“name”;“date”时,交互中意外的中缀运算符“时间”;“压力”;“强制”]
我无法让该代码正常工作,我得到了测试.fsx(124,1):错误FS0010:当我运行|>Frame.indexColsWith[“名称”;“日期”;“时间”;“压力”;“强制”]