我正在考虑使用 deedle 将数百个系列加入一个框架。实现这一目标的最佳功能方式是什么?
直接(必要)的想法是在循环之外创建一个框架对象持有者。然后在循环中,这个对象 old 用作系列连接的左侧。
再想一想,C#
尾递归?我做了一些研究,我对 c# 是否可以进行尾递归有点迷茫。#
Tomas 的《真实世界的函数式编程》一书中只有 F个例子
还有人有数百列(1000行)的deedle框架吗?对性能有很大影响吗?这听起来可能有些过分,但通常在电子表格中完成
欢迎任何建议。谢谢卡比
我正在考虑使用 deedle 将数百个系列加入一个框架。实现这一目标的最佳功能方式是什么?
直接(必要)的想法是在循环之外创建一个框架对象持有者。然后在循环中,这个对象 old 用作系列连接的左侧。
再想一想,C#
尾递归?我做了一些研究,我对 c# 是否可以进行尾递归有点迷茫。#
Tomas 的《真实世界的函数式编程》一书中只有 F个例子
还有人有数百列(1000行)的deedle框架吗?对性能有很大影响吗?这听起来可能有些过分,但通常在电子表格中完成
欢迎任何建议。谢谢卡比
创建框架的正确方法取决于数据的来源。
如果您已经拥有所有系列并且想要创建一个包含它们作为列的框架,那么该方法Frame.FromColumns
可能是要走的路。该方法采用键值对的集合,其中键是列名,值是列(系列)。
这是一个最小的示例,它创建了一个包含名称和系列的键值对数组:
var cols = new KeyValuePair<string, Series<int, object>>[]{
KeyValue.Create("IDs", (new object[] {1,2,2}).ToOrdinalSeries() ),
KeyValue.Create("Namess", (new object[] {"A", "B", "C"}).ToOrdinalSeries() )
};
var frame = Frame.FromColumns(cols);
我假设在您的情况下,您已经在某个集合中拥有该系列,因此功能性方法是使用 LINQ 并将Select
您的数据投影为正确的格式。所以你的代码可能看起来像:
var cols = someSource.Select(item =>
KeyValue.Create(item.Key, item.Series));
var frame = Frame.FromColumns(cols);
该FromColumns
操作在掩护下使用了外连接,但它已经过优化(例如,如果您有具有相同索引的系列)。Deedle的 C# 文档中有许多其他示例。