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

Python多CSV文件处理求助:合并数据至DataFrame并导出Excel时仅首个数据写入的问题

批量处理CSV并汇总数据到Excel的解决方案

问题描述

我是Python初学者,现需编写代码完成以下任务:

  1. 读取文件夹内100至200个CSV文件;
  2. 提取每个CSV文件中位置(2,2)的变量作为SIM-Karte(ID);
  3. 计算每个CSV文件第17列所有值的总和作为Datenverbrauch;
  4. 将上述所有提取的数据整理为单个DataFrame;
  5. 将该DataFrame导出至新的Excel文件。

我尝试了代码,但运行后仅首个CSV文件的ID和总和被导入Excel,不清楚如何正确创建包含所有数据的单个DataFrame,恳请得到帮助。

原代码的问题分析

咱们先拆解下你代码里的核心问题:

  1. 未累加数据:每次循环都新建df4,直接覆盖了之前文件的结果,相当于只保留了最后一次循环的数据(你说只看到首个可能是测试时的特殊情况,但核心逻辑是没收集所有数据)。
  2. ID提取错误:你用了skiprows=2,这会跳过前两行,而你要的(2,2)位置(第二行第二列)正好在被跳过的范围内,根本读不到目标值;同时usecols=[2,16]也没包含(2,2)对应的列(1-based的第2列对应0-based索引1)。
  3. 未定义合并变量:代码里用了concatenated.to_excel,但concatenated从来没被定义过,这会报错,你能运行起来可能是测试时的偶然情况。

修正后的代码

下面是调整后的完整代码,关键改进点我会在后面说明:

import pandas as pd
import os
import glob

# 获取当前目录下所有CSV文件路径
path = os.getcwd()
csv_files = glob.glob(os.path.join(path, "*.csv"))

# 初始化空列表,用来存每个CSV的提取结果
results_list = []

# 遍历所有CSV文件
for csv_file in csv_files:
    # 1. 提取SIM-Karte(ID):对应原文件(2,2)位置(1-based,即0-based行1、列1)
    # 只读取前2行,不用加载整个大文件,节省内存
    id_df = pd.read_csv(csv_file, sep=';', nrows=2, header=None)
    sim_id = id_df.iloc[1, 1]  # 第二行第二列(0-based索引)
    
    # 2. 计算第17列(0-based索引16)的总和
    # 只读取第17列,提升处理大量文件的效率
    data_df = pd.read_csv(csv_file, sep=';', usecols=[16], header=None)
    datenverbrauch = data_df.iloc[:, 0].sum()
    
    # 把当前文件的结果加入列表
    results_list.append({
        'SIM-Karte': sim_id,
        'Datenverbrauch': datenverbrauch
    })

# 把列表转换成统一的DataFrame
final_result = pd.DataFrame(results_list)

# 导出到Excel,index=False避免导出多余的索引列
final_result.to_excel('Auswertung.xlsx', index=False)

print(f"搞定!成功导出 {len(final_result)} 条记录到Excel文件~")

关键改进说明

  • 数据收集逻辑:用results_list列表逐个存储每个CSV的结果,最后一次性转成DataFrame,既避免了循环中重复创建DataFrame的开销,又能保证所有数据都被保留。
  • 精准提取ID:通过nrows=2只读取前两行,再用iloc[1,1]精准定位你要的(2,2)位置(如果你的(2,2)是0-based,也就是第三行第三列,改成iloc[2,2]就行),不用加载整个文件,处理大文件时速度更快。
  • 高效计算总和:用usecols=[16]只读取第17列,减少内存占用,尤其是处理100-200个文件时,这个优化很实用。
  • 整洁导出:添加index=False参数,避免把DataFrame的索引列导出到Excel,让最终的文件更干净。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 21:54:06