我有一个包含多个时间序列的框架,我需要标准化这些值。然后,我需要取每个系列的第一个元素,将系列的所有元素除以它。我尝试使用以下代码:
let normalize =
MyFrame
|> Frame.mapColValues (fun os ->
let osAsFloat = os.As<float>()
let firstItem = osAsFloat.GetAt(0)
osAsFloat / firstItem)
但我有一个错误:osAsFloat.GetAt(0)
。我发现的唯一方法是转换单个系列中的值,然后在 for 循环中将函数应用于值。有没有更实用的方法来达到同样的效果?谢谢。
EDIT
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>