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

读取多CSV文件指定列异常:数据重复/错乱的排查求助

问题原因分析

1. 使用names参数导致列值重复

你的CSV文件本身带有表头行(包含LOCALTIME、Flow_filter的行),但names参数是用来给无表头的CSV指定列名的。当你同时指定usecols和names时,pandas会把原文件的表头行当成普通数据行,再用你传入的names作为新列名。加上你后续删除前3行,有效数据和表头行混在一起,最终导致列值重复。

2. 移除names参数后LOCALTIME列错乱

你执行的df_vent.drop([0,1,2], axis=0)说明每个CSV的前3行是无效的说明内容,并非数据行。移除names参数后,pandas默认把第0行(原文件的第一行说明)当作表头,这会让后续列的对应关系完全错位,LOCALTIME自然会混入无关数值。

解决方法

正确的做法是跳过前3行无效内容,指定第4行(索引从0开始为第3行)作为表头,不需要使用names参数。修正后的代码如下:

import glob
import os
import pandas as pd

csv_files = glob.glob(os.path.join("C:/User/Documents/Auswertung/2/Vent_2022/*.csv"))
frames = []
for file in csv_files:
    # 跳过前3行无效内容,用第4行作为表头读取指定列
    df = pd.read_csv(
        file,
        sep=';',
        low_memory=False,
        usecols=['LOCALTIME', 'Flow_filter'],
        skiprows=3,  # 跳过前3行非数据内容
        header=0     # 此时第4行成为新的表头行
    )
    frames.append(df)

df_vent = pd.concat(frames, ignore_index=True)
display(df_vent)

补充提示

  • 可以先单独读取一个CSV的前10行(pd.read_csv(csv_files[0], sep=';', nrows=10)),确认表头所在的准确行号,调整skiprows的数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:20:51