2014-07-04 82 views
0

FrameExtensions似乎仅支持通过单列进行排序。 OrderBy有一个“.ThenBy”选项,但似乎已被弃用。任何其他方式排序“日期”,然后通过“RECN”?C#Deedle按多列进行排序

代码:

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.SortRowsstable,你可能只是排序反向每一列他们的排序优先顺序。

例如,如果要按“日期”进行排序,然后按“RECN”进行排序,请先按“RECN”排序,然后按“DATE”对结果进行排序。

这是基于Radix Sort的工作方式。

+0

呵呵。这似乎不符合FrameExtensions.SortRows的指定语法,但它似乎工作:FrameExtensions.SortRows(df1,“RECN”)。SortRows(“DATE”)。Print(); – user3478193