在Deedle Frame中更改数据类型

时间:2018-01-31 18:13:42

标签: csv f# type-conversion deedle

我在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))

我发现它仍然是一个漂浮物。 哪里我错了?

感谢。

1 个答案:

答案 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")