如何使用Pandas动态为不同列数DataFrame批量添加值为None的空行
Pandas批量为任意列数CSV追加全None空行实现方案
需求说明
- 待处理文件共200余份CSV,列数不统一,包含47列、50列、60列等多种情况
- 处理规则:为每个文件对应的DataFrame追加1行所有字段值为None的空行,处理后导出为新的CSV文件
- 效果要求:不改动原有数据和列结构,仅在原有表格内容基础上新增空行
实现代码
核心逻辑不需要手动判断列数,Pandas会自动适配每个DataFrame的列结构生成对应空行,直接运行即可完成批量处理:
import pandas as pd from pathlib import Path # 替换为本地实际路径 input_folder = Path("raw_csv_files") output_folder = Path("processed_csv_files") output_folder.mkdir(exist_ok=True) # 自动创建输出目录,已存在时不报错 for file in input_folder.glob("*.csv"): # 读取原始CSV df = pd.read_csv(file) # 生成与当前df列数完全匹配的全None空行,拼接至末尾 empty_row = pd.DataFrame([[None]*df.shape[1]], columns=df.columns) df = pd.concat([df, empty_row], ignore_index=True) # 导出文件,index=False表示不写入pandas自动生成的行索引 df.to_csv(output_folder / file.name, index=False, encoding="utf-8-sig")
参数调整说明
- 如果需要把空行添加到表格最开头,调换
pd.concat内两个对象的顺序即可,写法为pd.concat([empty_row, df], ignore_index=True) encoding="utf-8-sig"参数用于解决导出CSV用Excel打开时的中文乱码问题,无中文场景可删除该参数- 如果原始CSV存在特殊分隔符、无表头等情况,对应修改
pd.read_csv的sep、header参数即可适配
内容的提问来源于stack exchange,提问作者user19322596
相关产品推荐
相关产品推荐

