向 Deedle Frame 添加新列

Add new column to Deedle Frame

我想将包含数据的列添加到 deedle 数据框。 我就是这样做的,而且有效,但我相信应该有更好的方法?

void addTrendValues(Frame<int, string> df){

    List<double> trend_val = new List<double>();      

    df.FillMissing(0);
    List<int> indexes= new List<int>();
    for(int i =0; i<1000;i++){
        double trendpips = getPipsTilNextTrend(df,i);           
        trend_val.Add(trendpips);     
        indexes.Add(i);
        if(i% 10000 == 0) { Console.WriteLine(i) ;}            
    }


    df.AddColumn("trend_val",new Series<int, double>(indexes.ToArray(),trend_val.ToArray()));

}

有什么想法吗?

如果你通过某种方式生成IEnumerable<KeyValuePair<K,V>>,那么你可以使用Deedle提供的ToSeries扩展方法。下面的代码使用 LINQ 很好地做到了这一点(但它也删除了您可能想要恢复的打印)。

var newSeries = Enumerable.Range(0, 1000).Select(i =>
    KeyValue.Create(i, getPipsTilNextTrend(df, i))).ToSeries();
df.AddColumn("trend_val", newSeries);