循环处理任务时如何将DataFrame按每个task唯一ID导出为对应命名csv文件
Python按task分批次导出csv问题修复
错误原因
你当前的df.to_csv语句放在了for循环外部,只会在所有task遍历完成后执行1次:
- 如果循环变量
t在循环结束后超出了cv_tasks的索引范围,会直接触发索引越界报错 - 就算没有报错,也只会生成最后一个task对应的csv文件,无法批量生成所有task的文件
修复代码
基础修正(保留你原有索引遍历写法)
仅需将写入语句缩进,放到循环内部即可:
for t in range(0,len(cv_tasks)): # 原有处理逻辑 <...some process..> # 每个task处理完成后立即写入对应文件,注意和上方代码缩进对齐 df.to_csv('%s.csv' % cv_tasks[t], encoding='utf-8-sig', index=False)
优化写法(更简洁的遍历方式)
不需要通过索引取值,直接遍历cv_tasks元素即可:
for task in cv_tasks: # 原有处理逻辑 <...some process..> df.to_csv(f"{task}.csv", encoding='utf-8-sig', index=False)
注意事项
- 严格遵守Python缩进规则,循环内部的代码要比
for开头的语句多缩进4个空格,不要和循环外代码对齐 - 新增的
encoding='utf-8-sig'参数可避免csv内容或文件名含中文时出现乱码,index=False参数可避免将DataFrame的行序号写入文件 - 确认每个循环内你都会重新生成当前task对应的
df数据,避免所有导出文件内容重复
内容的提问来源于stack exchange,提问作者TeoK
相关产品推荐
相关产品推荐

