使用Pandas合并文件夹CSV文件:输出首列多余逗号问题求助
解决CSV合并后输出文件开头多余逗号的问题
问题核心
合并多个结构一致的CSV后,输出文件开头出现多余逗号导致列标题偏移;此前误以为设置ignore_index=True会替换DATE列,实际是对参数功能理解有误。
问题原因
- 原代码中
df_out.to_csv("output.csv")默认会将DataFrame的行索引写入CSV,这就是开头多余逗号的来源(索引列无标题,因此开头直接显示逗号)。 - 对
ignore_index参数的误解:该参数仅重置合并后的行索引(左侧的行号),不会修改或替换任何数据列(包括DATE列)。 - 路径错误:原代码
glob.glob("*.csv")读取的是当前工作目录的CSV,而非你选择的目标文件夹。
修正后的代码
import pandas as pd import glob from tkinter.filedialog import askdirectory path = askdirectory() + '/' # 修正路径:读取目标文件夹下的所有CSV文件 files = glob.glob(f"{path}*.csv") flist = [] for filename in files: df = pd.read_csv(filename, index_col=None, header=0) flist.append(df) # 重置行索引,避免多文件索引重复 df_out = pd.concat(flist, axis=0, ignore_index=True) # 禁止输出行索引列,解决开头多余逗号问题 df_out.to_csv("output.csv", index=False)
效果验证
输出的output.csv将不再有开头的多余逗号,列标题正常显示,DATE列完整保留:
DATE,PM2.5,PM10,CO2,TEMPERATURE,HUMIDITY 2023-02-20 10:01:13,6.4,7.1,920,18.8,78.8 2023-02-20 10:02:13,6.4,7.5,911,18.9,78.7 2023-02-20 10:03:13,5.5,6.4,901,19.1,78.0 2023-02-20 10:04:13,5.8,6.7,889,19.3,77.3
关键参数说明
ignore_index=True:合并后将行索引重置为连续数字,避免不同文件的索引重复,完全不影响数据列。index=False:写入CSV时不输出行索引列,从根源解决开头多余逗号的问题。
内容的提问来源于stack exchange,提问作者Grip
相关产品推荐
相关产品推荐

