You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将处理后的DataFrame导出回原导入CSV文件及优化代码

解决方案

一、将处理后的数据存回原始路径

你最初读取文件的filenames列表存储了所有原始文件的完整路径,且顺序和final列表中的处理后DataFrame一一对应,直接配对调用to_csv即可,示例代码如下:

import pandas as pd

# 你的原有处理代码
dfs = [pd.read_csv(filename) for filename in filenames]
final=[]
for i in range(139):    
    a= dfs[i].iloc[604:,]
    final.append(a)

# 新增存储代码
for filename, df in zip(filenames, final):
    # index=False表示不把pandas的行索引存入csv,不需要可以删掉这个参数
    df.to_csv(filename, index=False, encoding='utf-8-sig')

注:如果你的原始CSV有特殊编码要求,可以自行调整encoding参数的取值,比如中文gbk编码的文件可以填encoding='gbk'

二、代码效率优化

你的原有代码需要先把139个CSV全部读入内存存为dfs列表,处理后再存为final列表,内存开销大,且硬编码了139的文件数量,灵活性差,优化方案如下:

核心优化点:

  • 读文件时直接跳过前604行:利用pd.read_csv的skiprows参数,读文件阶段就过滤掉不需要的行,不需要读取全量文件后再切片,大幅降低IO和内存开销
  • 边读边处理边存储:不需要在内存中留存所有原始和处理后的DataFrame,处理完单个文件就直接存回,内存占用降到最低
  • 取消硬编码文件数:直接遍历filenames列表,适配任意数量的输入文件,不需要手动修改数字

优化后完整代码:

import pandas as pd

for filename in filenames:
    # skiprows=604 等价于原代码的 iloc[604:,] 效果,直接跳过前604行
    df = pd.read_csv(filename, skiprows=604)
    # 处理完直接存回原路径
    df.to_csv(filename, index=False, encoding='utf-8-sig')

注:如果你需要保留第604行作为表头,不需要调整参数;如果前604行包含表头,你需要跳过前N行后把第一行设为表头,可以调整skiprows和header参数适配你的数据格式

内容的提问来源于stack exchange,提问作者Ali Inayat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:45:03