如何用Pandas筛选0/1列、移除空列并清理缺失值
筛选CSV中仅含0/1的列并移除空列
以下是用Python pandas实现需求的步骤:
导入依赖库
import pandas as pd读取CSV文件
替换'your_input.csv'为你的实际文件路径:df = pd.read_csv('your_input.csv')移除全空列
先删掉整列都是空值(NA/NaN/空字符串)的参数列:# 移除所有值都是空的列 df = df.dropna(axis=1, how='all')筛选仅含0和1的列
定义一个辅助函数,判断列是否满足「无空值 + 仅包含0/1」的条件:def is_valid_binary_col(col): # 检查列是否存在任何空值 if col.isna().any(): return False # 检查列的所有唯一值是否仅为0和1(兼容字符串类型的'0'/'1') unique_values = col.unique() return set(unique_values).issubset({0, 1, '0', '1'})应用函数筛选目标列:
# 筛选符合条件的列 filtered_df = df.loc[:, df.apply(is_valid_binary_col)]如果你的数据里0/1是字符串类型,可以统一转为整数:
filtered_df = filtered_df.astype(int)查看或保存结果
打印前几行验证:print(filtered_df.head())保存到新的CSV文件:
filtered_df.to_csv('filtered_output.csv', index=False)
注意事项
- 如果CSV里的空值是用特定字符串(比如
'NA')表示的,读取时可以指定na_values参数:pd.read_csv('your_input.csv', na_values=['NA', '']) - 若数据量极大(10000列),可以考虑分块读取优化内存,但上述方法对于常规机器来说也能处理。
内容的提问来源于stack exchange,提问作者Muhammad Waqas
相关产品推荐
相关产品推荐

