如何循环遍历DataFrame批量处理CSV并按原文件名前缀导出?
批量处理CSV文件并保留原文件名前缀导出
完全可行!用循环来处理每个DataFrame并对应原文件名导出,绝对是这种批量任务最直观也最靠谱的实现方式——毕竟你已经把文件名和对应的DataFrame都准备好了,只要把它们一一配对起来循环处理就行,逻辑清晰还不容易出错。
我给你写个具体的代码示例,你可以直接套用到你的场景里:
import pandas as pd import os # 假设你已经通过代码获取了这两个列表 file_names = ["sales_202301.csv", "sales_202302.csv", "sales_202303.csv"] dfs = [pd.read_csv(f) for f in file_names] # 定义你的DataFrame处理函数(把你的实际处理逻辑放这里) def process_dataframe(df): # 示例处理:计算新列、过滤数据等,替换成你的脚本 df["total"] = df["quantity"] * df["price"] df = df[df["total"] > 100] return df # 循环配对处理并导出 for file_name, raw_df in zip(file_names, dfs): # 执行处理逻辑 processed_df = process_dataframe(raw_df) # 生成带原文件名前缀的导出文件名 # 分离原文件名和扩展名,避免手动拼接出错 base_name, ext = os.path.splitext(file_name) # 这里可以自定义导出文件名规则,比如原文件名+_processed+扩展名 output_filename = f"{base_name}_processed{ext}" # 导出CSV,index=False避免写入多余的索引列 processed_df.to_csv(output_filename, index=False) print(f"✅ 已完成:{output_filename}")
这里有几个小细节要注意:
- 用
zip(file_names, dfs)来同时遍历文件名和对应的DataFrame,确保两者严格一一对应,不会出现错位的情况 - 用
os.path.splitext()来处理文件名比手动切割字符串更安全,尤其是遇到带特殊字符或者多扩展名的文件时 - 把处理逻辑封装成单独的函数,能让你的代码更整洁,后续修改处理规则也更方便
- 导出时记得根据需求设置
index=False,默认情况下Pandas会把DataFrame的索引写入CSV,大多数场景下我们不需要这个
内容的提问来源于stack exchange,提问作者p.liz
相关产品推荐
相关产品推荐

