You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在DataFrame的select方法中能否连续使用两个Not操作符?

在DataFrame中组合多个列排除条件的正确方法

不能直接连续使用两个Not操作符,这种写法会导致选择逻辑混乱,无法实现“同时排除两组列”的需求。

问题根源

select函数会将传入的所有列选择器结果合并,你原代码的逻辑是:选择:Response_ID列 + 所有不在第一组排除列表中的列 + 所有不在正则匹配范围内的列。这会重复选择大量列,且完全偏离了“保留:Response_ID,同时排除指定列和正则匹配列”的目标。

正确实现方式

方式一:用Cols组合条件到单个Not中

通过Cols将固定列名和正则匹配规则组合,再用Not统一排除:

neatDf = select(df, :Response_ID, Not(Cols([:IP_Address, :Progress, :Finished, :User_Language, :Distribution_Channel, :Response_Type], r"^Recipient")))

方式二:先收集所有排除列再统一排除

先筛选出正则匹配的列名,合并到排除列表后再执行选择:

# 获取匹配正则的列名
regex_cols = names(df, r"^Recipient")
# 合并所有需排除的列
exclude_list = vcat([:IP_Address, :Progress, :Finished, :User_Language, :Distribution_Channel, :Response_Type], regex_cols)
# 执行选择操作
neatDf = select(df, :Response_ID, Not(exclude_list))

内容的提问来源于stack exchange,提问作者psych0groov3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 15:11:00