Мне нужно отсортировать столбцы фрейма данных Deedle на основе значения последней строки. Таким образом, первый столбец будет иметь наибольшее значение, а последний столбец будет иметь наименьшее значение в последней строке. Рамка Deedle имеет большую часть функциональности в строках.Сортировка рамки деды по столбцам на основе значения последней строки
Вот код для генерации данных выборки, где Элемент2 будет в конечном итоге со значением больше, чем item1:
#load @"..\..\FSLAB\packages\FsLab\FsLab.fsx"
open System
open System.Drawing
open System.Windows.Forms
open Deedle
open FSharp.Charting
open FSharp.Charting.ChartTypes
let rnd = new System.Random()
let dateRange = [for i in 9..-1..0 -> DateTime.Today.AddDays(float -i)]
let makeData x = [for i in 0..x-2 -> rnd.NextDouble()-0.5] |> List.scan (+) 0.
let series = makeData 10 |> List.zip <| (makeData 10 |> List.map (fun x -> x + 1.))
let df = series |> Frame.ofRecords
df?DateIndex <- dateRange |> Series.ofValues
let df = df.IndexRows<DateTime>("DateIndex")
В этом случае последний ряд кадр будет выглядеть следующим образом, имея большее из значений во второй колонке:
2016/05/14 0:00:00 -> 0.143158562780897 0.918480403450541
Но я хотел бы иметь его в таком порядке:
2016/05/14 0:00:00 -> 0.918480403450541 0.143158562780897
Я отправил ответ, но хотел бы посмотреть, есть ли другие подходы, поскольку я еще не слишком знаком с Deedle.
@FoggyFinder thx для этого предложения: 'let reverseer (a: 'T) (b:' T when 'T:> System.IComparable) = b.CompareTo (a)' – s952163