向 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);
我想将包含数据的列添加到 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);