如何在Pandas中自动筛选二进制列进行预处理?
自动筛选二进制列的解决方案
要精准筛选出仅包含0和1(含浮点型的0.0、1.0)的二进制列,可通过检查每一列的唯一有效值实现,直接排除0-1区间内的其他有理数。具体步骤如下:
- 定义判断二进制列的函数
该函数先剔除空值,再校验列的唯一值是否仅属于二进制允许的取值范围:
def is_binary_col(series): # 剔除空值后获取唯一值集合 unique_vals = series.dropna().unique() # 判断唯一值是否都为0、1(含整数和浮点型) return set(unique_vals).issubset({0, 1, 0.0, 1.0})
- 批量筛选二进制列
遍历DataFrame的所有列,用上述函数自动筛选符合条件的列:
# 提取所有二进制列的列名 binary_columns = [col for col in df.columns if is_binary_col(df[col])] # 生成仅包含二进制列的新DataFrame binary_df = df[binary_columns]
这种方式无需手动逐个检查列,能高效完成批量筛选。如果你的数据中不存在空值,也可以去掉dropna(),但保留该方法能避免空值干扰判断结果。
内容的提问来源于stack exchange,提问作者Ольга
相关产品推荐
相关产品推荐

