pandas使用read_fwf读取制表符分隔文件列名未拆分问题求助
问题根因
read_fwf是固定宽度格式(Fixed Width Format)文件的专用读取接口,默认按照预设的列宽度拆分字段,你传入的sep参数对该方法不生效,无论怎么配置制表符相关的分隔符规则,都不会按分隔符拆分字段,这是所有列名合并为单个字段的核心原因。
解决方案
方案1:适配分隔符类文件的最优方案(推荐)
如果你的test.txt确实是制表符分隔的非固定宽度文件,直接替换为read_csv方法即可,适配你的参数的代码如下:
df = pd.read_csv("test.txt", sep='\t', header = 20, engine='python') print(list(df.columns.values))
该方法原生支持按分隔符拆分字段,完全满足你的读取需求。
方案2:确实需要使用read_fwf读取固定宽度文件的解决方案
如果你的数据部分是固定宽度格式,仅表头行是制表符分隔,可单独读取表头拆分后指定给读取参数:
# 提前读取拆分表头(header=20对应0索引的第20行) with open("test.txt", "r", encoding="utf-8") as f: all_lines = f.readlines() col_names = all_lines[20].strip().split("\t") # 读取数据时跳过前21行(包含表头行),指定拆分好的列名 df = pd.read_fwf("test.txt", skiprows=21, names=col_names, engine='python') print(list(df.columns.values))
注意事项
pandas的行索引默认从0开始计数,如果你配置的header=20是指肉眼计数的文件第21行,可根据实际情况调整上述代码中的行号参数。
内容的提问来源于stack exchange,提问作者Python account
相关产品推荐
相关产品推荐

