将新列添加到Deedle Frame

时间:2018-03-10 15:16:13

标签: c# deedle

我想将数据列添加到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()));

}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您以某种方式生成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);