合并CSV文件代码生成空文件求助:跳过行保留指定列
修正合并指定CSV文件的Python代码
你遇到的问题很典型,我先帮你拆解原代码里的几个关键问题:
- skiprows参数使用错误:你想要跳过前7行,但
skiprows=[1,2,3,4,5,6,7]是跳过第2到第8行(pandas中行号从0开始计数),反而保留了第一行,这会导致后续读取的数据结构混乱;直接用skiprows=7就能准确跳过前7行,写法更简洁。 - usecols参数匹配错误:你要保留第1、2列,对应pandas的列索引是
[0,1],而原代码里的[1,2]会读取第2、3列,完全偏离了你的需求。 - append方法已被弃用:pandas的
append早已不再推荐使用,改用pd.concat合并DataFrame会更稳定、高效。 - index_col设置不合理:把第二列设为索引可能导致合并时数据丢失或结构异常,建议先不设置索引,后续按需调整。
下面是修正后的完整代码:
import pandas as pd import glob import os # 切换到目标工作目录 os.chdir("L:/FMData/") # 初始化空列表存储每个文件的DataFrame df_list = [] # 遍历所有匹配的CSV文件(加上.csv后缀避免匹配非CSV文件) for file in glob.glob("F5331_FM001*.csv"): # 跳过前7行,读取第1、2列(对应索引0和1) namedf = pd.read_csv(file, skiprows=7, usecols=[0, 1]) df_list.append(namedf) # 合并所有DataFrame,重置索引避免混乱 results = pd.concat(df_list, ignore_index=True) # 输出到目标文件,禁用索引列避免冗余 results.to_csv('L:/FMData/FM001_D/FM5331_FM001_D.csv', index=False)
额外给你两个实用提示:
- 如果CSV文件的第8行是表头,不用额外设置参数;如果没有表头,记得加上
header=None,防止把第一行数据误识别为表头。 - 可以在遍历文件时加上打印语句(比如
print(f"已读取文件: {file}")),方便你确认哪些文件被成功加载。
内容的提问来源于stack exchange,提问作者LMC94
相关产品推荐
相关产品推荐

