C# C Deedle Dataframe比较列以创建新的结果列
请有人帮我摆脱痛苦!尽管有那么多树,我还是看不见森林。我有一个填充的Deedle框架,其类型为: 框架MyPopulatedFrame 我不会让您对初始填充例程感到厌烦,但它打印出来的value1和value2列很好,没有问题C# C Deedle Dataframe比较列以创建新的结果列,c#,frame,calculated-columns,deedle,C#,Frame,Calculated Columns,Deedle,请有人帮我摆脱痛苦!尽管有那么多树,我还是看不见森林。我有一个填充的Deedle框架,其类型为: 框架MyPopulatedFrame 我不会让您对初始填充例程感到厌烦,但它打印出来的value1和value2列很好,没有问题 value1, value2 1,2 10,5 100,200 etc etc 然后,我可以添加以下代码来对两列求和,这在整个系列中也很有效: MyPopulatedFrame.AddColumnvalue1add2,PairOHLCVFrame.GetColumnva
value1, value2
1,2
10,5
100,200
etc etc
然后,我可以添加以下代码来对两列求和,这在整个系列中也很有效:
MyPopulatedFrame.AddColumnvalue1add2,PairOHLCVFrame.GetColumnvalue1+PairOHLCVFrame.GetColumnvalue2
它在帧的末尾给了我一个令人愉快的小计算列,每一行都有正确的值。i、 e
value1, value2, value1add2
1,2,3
10,5,15
100,200,300
etc etc
我真正想做的是,根据value1大于value2,用1或0填充另一列。代码应该如下所示:
MyPopulatedFrame.AddColumnisValue1是否创建一个值2,PairOHLCVFrame.GetColumnvalue1>PairOHLCVFrame.GetColumnvalue2?1 : 0;
但这甚至无法编译。给出的设计时间误差为:
运算符“>”不能应用于“Series”和“Series”类型的操作数
我知道答案一定很简单,但这是在我的笔记本电脑降落到花园之前到达那里的情况…如果你是从一个集合中填充,你可以简单地比较value1和value2,并将结果存储在一个系列中
var comparedResult = objects.Select(x => x.Value1 > x.Value2? 1:0).ToOrdinalSeries();
MyPopulatedFrame.AddColumn("IsGreater", comparedResult);
如果需要从另一个数据帧获取值列,请尝试下面的方法
var newList = dfObjects.Rows.Select(x => new { Value1 = x.Value.GetAs<int>("Value1"),
Value2 = x.Value.GetAs<int>("Value2")
}).Observations;
var comparedResult = newList.Select(x => x.Value.Value1 >= x.Value.Value2 ? 1 : 0).ToOrdinalSeries();
dfObjects.AddColumn("IsGreater", comparedResult);
如果从集合中填充,只需比较value1和value2,并将结果存储在一个系列中
var comparedResult = objects.Select(x => x.Value1 > x.Value2? 1:0).ToOrdinalSeries();
MyPopulatedFrame.AddColumn("IsGreater", comparedResult);
如果需要从另一个数据帧获取值列,请尝试下面的方法
var newList = dfObjects.Rows.Select(x => new { Value1 = x.Value.GetAs<int>("Value1"),
Value2 = x.Value.GetAs<int>("Value2")
}).Observations;
var comparedResult = newList.Select(x => x.Value.Value1 >= x.Value.Value2 ? 1 : 0).ToOrdinalSeries();
dfObjects.AddColumn("IsGreater", comparedResult);
太好了,谢谢。为了保持整洁,我把它压缩成了一行,我确信它看起来和我今天早上花了3个小时摆弄的那行代码一模一样!有时它需要新鲜的眼睛,我感谢你的帮助。我将在最初的两列放置一段时间后再填充它,因此最终结果如下:MyPopulatedFrame.AddColumnvalue1add2,MyPopulatedFrame.Rows.Selectx=>x.Value.GetAsvalue1