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

如何用Pandas读取含不等长列与缺失值的固定宽文本为DataFrame

按固定字段长度转换文本为DataFrame的解决方案

当然可以实现,用Python的pandas就能轻松搞定,核心是用专门处理固定宽度文本的read_fwf方法,和你在bash里用substr()的逻辑完全一致——按字符位置/长度截取字段,根本不会因为空格或逗号拆分像"No Presento"这类带空格的字段。

具体步骤:

  1. 定义字段规则:先明确每个字段的宽度(或起始/结束字符位置),比如字段1占5个字符,字段2占12个,字段3占8个。
  2. 读取固定宽度文本:用read_fwf加载文件,指定宽度或位置区间,同时定义列名。
  3. 处理缺失值:将识别到的缺失值转为空字符串。

示例代码:

假设你的文本文件data.txt内容如下(严格固定长度,缺失位留空):

12345No Presento  20240101
67890              20240102
     OtroValor    20240103

对应代码:

import pandas as pd

# 定义每个字段的宽度,顺序对应各列
col_widths = [5, 12, 8]
# 自定义列名
col_names = ['ID', 'Status', 'Date']

# 读取固定宽度文本,自动按长度分割字段
df = pd.read_fwf('data.txt', widths=col_widths, names=col_names)

# 将缺失值转为空字符串(按需调整,也可以保留NaN)
df = df.fillna('')

print(df)

关键说明:

  • 如果不想用宽度,也可以用colspecs参数指定每个字段的字符区间,比如colspecs=[(0,5), (5,17), (17,25)],效果和widths完全一致。
  • read_fwf会自动识别固定长度内的空值,配合fillna('')就能把缺失值转为你需要的空字符串格式。
  • 因为是按字符位置截取,带空格的字符串(比如"No Presento")会完整保留在对应的字段里,不会被拆分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:30:48