在 C# 中使用 Deedle,我如何才能 select 仅包含来自帧的非负值的列?

How can I select only the columns containing non negative values from a frame using Deedle in C#?

我想 select/过滤框架中不包含负值的列。这意味着创建一个新框架,其中的列仅包含正值。

类似于以下内容(语法错误):

var myFrameNoNeg = myFrame.Columns.Where(kvp => kvp.Value > 0); // 

想法是删除包含负值的列。

谢谢。

您的代码指向正确的方向 - 您需要使用 frame.Columns.Where。但是,这不会给您单独的值,而是整个列(作为一个系列),因此您需要(再次)迭代列中的所有值:

using Deedle;
using System.Linq;

Frame.FromColumns(frame.Columns.Where(kvp => 
  !kvp.Value.As<double>().Values.Any(v => v < 0.0)))

由于您正在对列进行迭代,因此您需要在最后调用 Frame.FromColumns 将列系列变回框架。

Where 方法将列数据作为包含对象的盒装系列提供。使用 As<double>() 是获取浮点值的有效方法。