You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas读取前3列值含空格的固定宽度空格分隔文本文件

完全可以用Pandas实现你要的读取效果,Pandas内置的read_fwf()(固定宽度文件读取函数)就是专门处理这类固定列宽+后续空格分隔的混合格式场景的。

具体实现步骤

  1. 先定义列的读取规则:你提到前3列每列固定占7个字符,因此前3列的字符起止位置分别为(0,7)、(7,14)、(14,21),剩余所有字符从位置21开始单独归为一列。
  2. 按固定宽度规则读取文件后,把最后一列的剩余内容按空格拆分,得到后5列数值,和前3列合并即可得到8列的目标DataFrame。

示例代码

import pandas as pd

# 定义每列的起止位置区间
col_specs = [
    (0, 7),
    (7, 14),
    (14, 21),
    (21, None)
]
# 按固定宽度读取文件,header=None表示原文件没有表头
df = pd.read_fwf("你的文件路径.txt", colspecs=col_specs, header=None)
# 拆分最后一列的剩余内容为后5列,可根据需要转换为数值类型
df_last_cols = df[3].str.split(expand=True).astype(float)
# 合并前3列和后5列,自定义列名
result = pd.concat([df[[0,1,2]], df_last_cols], axis=1)
result.columns = ["col1", "col2", "col3", "col4", "col5", "col6", "col7", "col8"]

补充说明

如果你需要把前3列的前后冗余空格去掉,可以对前3列做一次去空格处理:

result[["col1", "col2", "col3"]] = result[["col1", "col2", "col3"]].apply(lambda x: x.str.strip())

用你给出的示例数据测试,最终输出的前3列会正确保留列内部的空格,后5列也会正确解析为对应数值,完全符合你要求的输出格式。

内容的提问来源于stack exchange,提问作者user3476187

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 14:42:03