C#Deedle按多列排序

时间:2014-07-04 11:31:53

标签: c# sorting deedle

FrameExtensions似乎只支持按单列排序。 OrderBy有一个“.ThenBy”选项,但似乎已被弃用。还有其他任何方式按“DATE”排序,然后按“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 个答案:

答案 0 :(得分:1)

假设FrameExtensions.SortRowsstable,您可以按照排序优先级的相反顺序对每列进行排序。

例如,如果您想按&#34; DATE&#34;排序然后通过&#34; RECN&#34;,首先按&#34; RECN&#34;然后按&#34; DATE&#34;。

对结果进行排序

这取决于Radix Sort的工作原理。