如何在Microsoft.Data.Analysis中逐元素使用逻辑与运算符?
在Microsoft.Data.Analysis中实现逐元素按位与筛选
实现方案
你的需求是筛选col1列中满足元素 & 1 > 0的行(本质是筛选奇数),由于PrimitiveDataFrameColumn没有内置的ElementwiseLogicalAnd方法,可通过以下两种方式实现:
方法一:生成布尔筛选列后过滤
先通过Select方法对列中每个元素执行按位与运算,生成布尔类型的筛选索引列,再传入Filter方法完成筛选:
// 先将col1转换为对应整数类型的列(示例为int类型) var col1 = (PrimitiveDataFrameColumn<int>)df.Columns["col1"]; // 生成筛选条件列:判断元素与1按位与结果是否大于0 PrimitiveDataFrameColumn<bool> filterIndx = col1.Select(x => (x & 1) > 0); // 应用筛选得到新DataFrame DataFrame newdf = df.Filter(filterIndx);
方法二:直接在Filter中嵌入判断逻辑
跳过单独生成筛选列的步骤,直接在Filter方法中传入Lambda表达式形式的判断逻辑,写法更简洁:
// 直接传入列和判断条件完成筛选 DataFrame newdf = df.Filter((PrimitiveDataFrameColumn<int>)df.Columns["col1"], x => (x & 1) > 0);
注意事项
- 确保
col1列的类型为整数类型(如int、long),若为其他数值类型需先做类型转换; - 若列中存在
null值,可在判断逻辑中加入空值处理,例如:x != null && (x & 1) > 0。
内容的提问来源于stack exchange,提问作者wjh
相关产品推荐
相关产品推荐

