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.