Pandas合并CSV时重复浮点值出现多余小数后缀问题
问题原因分析
你的核心问题是CSV文件无表头,但未告知Pandas:
- Pandas默认将文件第一行解析为列名,而你的数据行里存在重复数值(比如多个
0.000),这些重复的"列名"会被Pandas自动重命名为0.000.1、0.000.2格式。 - 同时你每次循环都用
mode='a'追加写入,默认会重复输出表头,进一步导致数据格式混乱。
修复代码
import pandas as pd import glob import os path = "trainingData" csv_files = glob.glob(os.path.join(path, "*.csv")) # 控制仅第一次写入时输出表头 first_write = not os.path.exists("allData.csv") for idx, f in enumerate(csv_files, 1): print(f"File: {idx} of {len(csv_files)}") # 明确指定无表头,避免将数据行当作列名解析 df = pd.read_csv(f, lineterminator='\n', delimiter=', ', header=None) print(df.head(5)) df.to_csv( "allData.csv", index=False, na_rep="0", mode='a', lineterminator='\r\n', float_format='%.3f', sep=', ', # 匹配输入文件的分隔符,避免格式不一致 header=first_write ) # 第一次写入后,后续不再输出表头 first_write = False
关键修复点
header=None:告诉Pandas文件没有表头,自动用数字索引(0、1、2...)作为列名,彻底避免重复列名导致的后缀问题。- 表头控制:通过
first_write变量确保仅第一次写入时输出表头,防止表头重复混入数据。 - 统一分隔符:写入时指定
sep=', ',和读取时的分隔符保持一致,避免输出格式混乱。
内容的提问来源于stack exchange,提问作者ItsShuriken
相关产品推荐
相关产品推荐

