我有一个包含几个时间序列的Frame,我需要规范化这些值。然后,我需要获取每个系列的第一个元素,将系列的所有元素除以它。
我尝试使用以下代码:
let normalize =
MyFrame
|> Frame.mapColValues (fun os ->
let osAsFloat = os.As<float>()
let firstItem = osAsFloat.GetAt(0)
osAsFloat / firstItem)
但我在osAsFloat.GetAt(0)
有错误。
我找到的唯一方法是在单个Series中转换值,在for循环中,将函数应用于值。
有一种更实用的方法可以达到相同的效果吗?
感谢。
修改
MyFrame来自下一个从Yahoo!下载数据的功能。财务:
let loadStocks symbols startDate endDate =
[for symbol in symbols ->
symbol =>
let data = StockData.Load(urlFor symbol startDate endDate).Rows
Series.ofObservations [for d in data -> (d.Date, d.Close)]]
|> Frame.ofColumns
|> Frame.sortRowsByKey
let MyFrame = loadStocks symbolList startDate endDate
它的类型是Frame<DateTime, string>