Я загружаю последовательность записей в фрейм данных деды (из таблицы базы данных). Можно ли накапливать (например, суммарно) значения и возвращать кадр данных? Например, есть Series.scanValues, но нет Frame.scanValues. Существует FrameMap, но он не делал того, что я ожидал, он оставил все значения такими, какими они были.Как суммировать (сканировать) Значения фрейма данных Deedle
#if INTERACTIVE
#r @"Fsharp.Charting"
#load @"..\..\Deedle.fsx"
#endif
open FSharp.Charting
open FSharp.Charting.ChartTypes
open Deedle
type SeriesX = {
DataDate:DateTime
Series1:float
Series2:float
Series3:float
}
let rnd = new System.Random()
rnd.NextDouble() - 0.5
let data =
[for i in [100..-1..1] ->
{SeriesX.DataDate = DateTime.Now.AddDays(float -i)
SeriesX.Series1 = rnd.NextDouble() - 0.5
SeriesX.Series2 = rnd.NextDouble() - 0.5
SeriesX.Series3 = rnd.NextDouble() - 0.5
}
]
# now comes the deedle frame:
let df = data |> Frame.ofRecords
let df = df.IndexRows<DateTime>("DataDate")
df.["Series1"] |> Chart.Line
df.["Series1"].ScanValues((fun acc x -> acc + x),0.0) |> Chart.Line
let df' = df |> Frame.mapValues (Seq.scan (fun acc x -> acc + x) 0.0)
df'.["Series1"] |> Chart.Line
Последние две строки просто отдай мне исходные значения в то время как я хотел бы иметь накопленные значения, как и в ДФ. [ «Series1»]. Scanvalues для Series1, Series2 и Series3.
Извините, но не ясно, что вы хотите получить. –
Если вы запустите следующий код: https://dotnetfiddle.net/kiPOy4, вы получите следующий результат: http://pastebin.com/30MBT9Y2. Как вы можете видеть - легко добавить столбцы в фрейм. –
Вы также можете использовать стиль F #: 'df. [" Series1 "] |> Series.scanValues ((+)) 0.0' –