C# Deedle сортировка по нескольким столбцам

FrameExtensions поддерживает сортировку только по одному столбцу. У OrderBy была опция ".ThenBy", но она, видимо, устарела. Любой другой способ сортировки по "ДАТА", а затем "RECN"?

Код:

using System;
using Deedle;

namespace test
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            var df1 = Frame.ReadCsv (@"../../test.csv");
            Console.WriteLine(df1.GetType ());
            df1.Print ();
            FrameExtensions.SortRows (df1, "DATE").Print();
        }
    }
}

Это тоже не работает:

df1.GroupRowsBy<int> ("RECN").GroupRowsBy<DateTime> ("DATE").Print ();
df1.GroupRowsBy<DateTime> ("DATE").GroupRowsBy<int> ("RECN").Print ();

Данные:

NAME,TYPE,DATE,RECN,COMM
Kermit,Frog,06/30/14,1,1test
Kermit,Frog,06/30/14,1,2test
Ms. Piggy,Pig,07/01/14,2,1test
Fozzy,Bear,06/29/14,3,1test
Kermit,Frog,07/02/14,1,3test
Kermit,Frog,07/02/14,1,4test
Kermit,Frog,07/02/14,1,5test
Ms. Piggy,Pig,07/02/14,2,3test
Fozzy,Bear,07/02/14,3,2test
Ms. Piggy,Pig,07/02/14,2,2test

1 ответ

Решение

Если предположить, FrameExtensions.SortRows является стабильным, вы можете просто отсортировать каждый столбец в обратном порядке их приоритета сортировки.

Например, если вы хотите отсортировать по "ДАТА", а затем по "RECN", сначала сортируйте по "RECN", а затем сортируйте результат по "ДАТА".

Это основано на том, как работает Radix Sort.

Другие вопросы по тегам