如何使用Pandas对多个CSV文件执行相同处理并保存至其他目录?
解决CSV批量处理后保存的问题
我来帮你搞定这两个问题!先分析下你当前代码的核心问题:
- 每次保存都用固定字符串
"C:\new\path\to\file\variable name",导致每次循环都会覆盖同一个文件,最后自然只剩最后一次迭代的结果。 - 要给每个处理后的文件设置不同名称,最直观的方式是复用原CSV的文件名,把它放到目标目录里即可。
下面是修改后的完整代码,我标注了关键改动点:
from pathlib import Path import pandas as pd # 用Path对象处理路径更安全,避免转义字符问题 source_dir = Path(r'C:\my\path\to\file') target_dir = Path(r'C:\new\path\to\file') # 确保目标目录存在,不存在则自动创建(包括父目录) target_dir.mkdir(parents=True, exist_ok=True) csv_files = list(source_dir.glob('*.csv')) # 列出目录下所有CSV文件 for csv in csv_files: df = pd.read_csv(csv, encoding='ISO-8859-1', engine='python', delimiter=';') df.drop(df.index[:-1], inplace=True) # 仅保留最后一行 # 关键:拼接原文件名和目标目录,保证每个文件有独立名称 target_file_path = target_dir / csv.name df.to_csv(target_file_path, index=False) # index=False可避免保存额外的索引列,按需调整
关键改动说明:
- 改用
Path对象管理路径:比纯字符串更可靠,能自动适配不同系统的路径分隔符,还能避免转义字符出错。 - 新增目录创建逻辑:
target_dir.mkdir(...)确保保存文件的目标目录存在,不会因为目录缺失报错。 - 动态生成保存路径:
target_dir / csv.name会把原文件的名称和目标目录拼接,这样每个处理后的文件都会以原文件名保存到新目录,不会互相覆盖。
另外,很高兴听到Rakesh的解决方案对你完全有效,也希望这个调整后的代码能帮你更顺畅地完成批量处理工作!
内容的提问来源于stack exchange,提问作者anton
相关产品推荐
相关产品推荐

