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

如何利用enumerate参数命名DataFrame变量批量处理CSV文件

批量处理CSV文件生成对应DataFrame并导出的解决方案

问题背景

需要处理两个CSV文件(a.csv、b.csv),分别生成对应的结果DataFrame并导出为新CSV。原代码仅完成单个文件的处理,且需要手动定义df_a、df_b这类固定名称的空DataFrame,无法实现批量自动化处理,希望通过循环中的文件名参数动态处理每个文件。

原代码示例

list_files = ['a.csv', 'b.csv']

for i, file in enumerate(list_files):
    df = pd.read_csv(file)

    # 创建空DataFrame存储迭代结果
    df_a = pd.DataFrame(columns=['start', 'end'])
    for index, row in df.iterrows():
        var = df.loc[index, 'name']
        df_new = SomeFunction(var)
        # 追加新行到空DataFrame
        dicts = {'start': df_new['column1'], 'end': df_new['column2']}
        df_dicts = pd.DataFrame([dicts])
        df_a = pd.concat([df_a, df_dicts], ignore_index=True)
    df_a_csv = df_a.to_csv('df_a.csv')

改进后的批量处理代码

import pandas as pd

list_files = ['a.csv', 'b.csv']

for file in list_files:
    df = pd.read_csv(file)
    # 为当前文件创建临时结果DataFrame,无需固定命名
    result_df = pd.DataFrame(columns=['start', 'end'])
    
    for index, row in df.iterrows():
        var = row['name']  # 直接用row取值更简洁
        df_new = SomeFunction(var)
        # 构造行数据并追加
        row_data = {'start': df_new['column1'], 'end': df_new['column2']}
        result_df = pd.concat([result_df, pd.DataFrame([row_data])], ignore_index=True)
    
    # 根据原文件名生成导出的CSV文件名,比如a.csv对应df_a.csv
    output_filename = f'df_{file}'
    result_df.to_csv(output_filename, index=False)

额外优化建议

循环中多次使用pd.concat效率较低,可以改用列表收集所有行数据,最后一次性生成DataFrame:

import pandas as pd

list_files = ['a.csv', 'b.csv']

for file in list_files:
    df = pd.read_csv(file)
    data_rows = []
    
    for index, row in df.iterrows():
        var = row['name']
        df_new = SomeFunction(var)
        data_rows.append({
            'start': df_new['column1'],
            'end': df_new['column2']
        })
    
    # 一次性生成结果DataFrame
    result_df = pd.DataFrame(data_rows, columns=['start', 'end'])
    output_filename = f'df_{file}'
    result_df.to_csv(output_filename, index=False)

关键说明

  • 无需提前定义df_a、df_b这类固定变量,在循环内部为每个文件创建独立的result_df即可
  • 使用原文件名动态生成导出的CSV名称,确保每个文件的结果对应正确
  • 优化后的列表收集方式避免了多次concat的性能损耗,处理大文件时更高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:40:33