我在Deedle Frame中导入了一些数据,我正在尝试转换整数类型的值类型。
我使用了以下代码:
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))
我发现它仍然是一个漂浮物。 哪里我错了?
感谢。
答案 0 :(得分:4)
将Frame.Item
属性的结果作为列的真实类型是错误的。 myFrame03.Item("Adj. Open")
的签名为string -> Series<DateTime,float>
,因此个别观察的结果不能是float
。
如果您使用其他形式的Item
属性
myFrame03.Item("Adj. Open",DateTime(2017, 5, 3))
拥有签名string*DateTime -> obj
,您必须在申请后看到观察结果为unsigned long
Frame.mapValues
,确实。
此外,如果有疑问,您可以随时检查实际的数据框列类型:
myFrame03.ColumnTypes |> Seq.iter (printfn "%A")