如何识别仅含'skip'和'dne'的df列并删除以实现特征降维?
处理大型DataFrame的特征降维方案
针对你这个7万列的字符串型DataFrame,已经把NaN替换成'dne'后,要删掉仅包含'skip'和'dne'的列,可以这么做:
高效版本(适合超大型数据集)
先缩小候选列范围,再精准筛选,能大幅提升处理速度:
# 第一步:先找出唯一值数量≤2的列(减少后续计算量) candidate_cols = df.columns[df.nunique() <= 2] # 第二步:从候选列里筛选出仅含'skip'和'dne'的列 cols_to_drop = [col for col in candidate_cols if set(df[col].unique()) == {'skip', 'dne'}] # 第三步:删除目标列 df.drop(cols_to_drop, axis=1, inplace=True)
简洁版本(数据量较小时用)
如果数据集没大到极致,也可以用一行式筛选直接删除:
df = df.drop([col for col in df.columns if set(df[col].unique()) == {'skip', 'dne'}], axis=1)
核心逻辑就是检查每列的唯一值集合,判断是否只有skip和dne两个值,符合条件的直接从DataFrame中移除。先筛选唯一值≤2的列,能避免对7万列全量做集合检查,让处理效率更高。
内容的提问来源于stack exchange,提问作者surfer349
相关产品推荐
相关产品推荐

