如何使用Python删除CSV文件中含空单元格或值为0的行
大CSV无效行清洗实现方案
核心实现逻辑
- 采用逐行流式读写处理,不用把整个文件加载到内存,适配GB级大文件场景
- 逐单元格校验,只要任意单元格满足「去除前后空白后为空」或「值为0」两个条件之一,就丢弃整行
- 校验通过的行直接写入新的结果文件,不修改原始CSV避免数据丢失
- 默认保留原始表头,不需要可以自行删除对应代码
可直接运行的代码
import csv with open('data.csv', 'r', encoding='utf-8', newline='') as in_file, \ open('data_cleaned.csv', 'w', encoding='utf-8', newline='') as out_file: reader = csv.reader(in_file) writer = csv.writer(out_file) # 写入表头,无表头请删除以下2行 table_header = next(reader) writer.writerow(table_header) for row in reader: row_valid = True for cell in row: cell_content = cell.strip() # 命中无效规则直接标记行失效,跳出当前行的校验 if not cell_content or cell_content == '0': row_valid = False break if row_valid: writer.writerow(row)
原有代码的问题
- 仅检查了每行第一列
row[0]的空值情况,没有覆盖所有列的校验 - 缺失「单元格值为0」的判定逻辑
- 没有写入结果文件的逻辑,仅做了打印输出,不会生成清洗后的文件
- 没有处理单元格前后带空格、制表符的隐形空值场景,容易漏判无效行
内容的提问来源于stack exchange,提问作者Saahas
相关产品推荐
相关产品推荐

