在Deedle框架中更改数据类型

3

我在Deedle框架中导入了一些数据,并尝试将值的类型转换为整数类型。

我使用了以下代码:

let myFrmK01 = Frame.ReadCsv(@"QuandlDataSample.csv", hasHeaders=true)
let myFrmK02 = myFrmK01
                |> Frame.indexRowsDate "Date"
                |> Frame.sortRowsByKey

现在,为了转换数值类型,我尝试使用以下方法:
let myFrame03 = Frame.mapValues (fun (x:float) -> (Convert.ToUInt64(x * 100.0))) myFrame02

如果我使用以下代码查看帧的值:

myFrame03.Item("Adj. Open").Item (DateTime(2017, 5, 3))

我发现它仍然是一个浮点数,我错在哪里了?
谢谢。
1个回答

5
你在使用Frame.Item属性的结果作为列的真实类型时是错误的。 myFrame03.Item("Adj. Open") 的签名是 string -> Series<DateTime,float>,因此个别观察结果只能是float
如果你使用其他形式的Item属性,......
myFrame03.Item("Adj. Open",DateTime(2017, 5, 3))

如果你使用了Frame.mapValues函数,并且你的签名为string*DateTime -> obj,那么在观察应用后,你必须确保数据的类型是unsigned long

此外,当你有疑问时,你可以随时检查实际数据帧的列类型:

myFrame03.ColumnTypes |> Seq.iter (printfn "%A")

Gene,我按照你的建议,在文档中找到了Item的另一种形式。非常感谢你。 - Felice Bruno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接