如何用Pandas合并多个.csv文件并保留原始结构?
解决Pandas合并CSV文件后结构丢失的问题
你遇到的核心问题是在pd.read_csv里错误设置了sep='delimiter'参数——这个参数会让Pandas把字符串delimiter当成列分隔符,而你的CSV文件显然不是用这个字符串分隔的,所以Pandas无法正确识别列结构,只能把整行内容塞进单个列里,表头也变成了所有原始列名的拼接文本。
修正后的合并代码
直接去掉错误的分隔符设置(如果你的CSV是标准逗号分隔格式,pd.read_csv默认会自动识别),代码如下:
import pandas as pd import glob # 获取所有目标CSV文件 total_files = glob.glob("something*.csv") data_frames = [] for csv_file in total_files: # 读取单个CSV,使用默认的逗号分隔(如果是其他分隔符,比如分号,改成sep=';') df = pd.read_csv(csv_file, encoding="utf-8") data_frames.append(df) # 合并所有DataFrame并重置索引 merged_df = pd.concat(data_frames, ignore_index=True) # 保存合并后的文件,不要写入索引列 merged_df.to_csv("output.csv", index=False)
为什么之前的代码会出错?
你之前的代码里sep='delimiter'是完全错误的用法:
sep参数需要传入实际的列分隔符(比如逗号,、制表符\t、分号;等),而不是字符串delimiter。- 当Pandas找不到指定的分隔符时,会把每一行当成一个单独的列,表头自然就变成了第一行的全部内容拼接。
处理TEXT列内容过长的显示问题
如果想在查看数据时完整显示TEXT列的长内容,可以添加以下Pandas显示设置:
# 设置显示最大列宽,-1表示显示全部内容 pd.set_option('display.max_colwidth', -1) # 可选:设置显示所有列(如果列数较多时) pd.set_option('display.max_columns', None)
这样无论是单独查看单个CSV还是合并后的DataFrame,TEXT列的内容都能完整展示了。
内容的提问来源于stack exchange,提问作者pimwel
相关产品推荐
相关产品推荐

