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

Pandas read_table读取txt文件报错:行token数比预期值多1

问题原因

这个报错和数据里的负值没有任何关系,问题出在你设置的分隔符规则上:

  • 你手动指定了delimiter=" ",意味着解析器只会把单个半角空格识别为列分隔符
  • 你提供的txt文件中,列之间存在数量不一致的多个空格,部分行末尾还带有多余的尾随空格,这种场景下连续空格会被解析成空值字段,最终统计到的字段数和表头定义的6列不匹配,就会抛出你看到的解析错误。
修复方案

只需要调整read_table的分隔符参数即可,不需要修改原始数据文件,两种常用写法任选其一:

  • 直接删除delimiter=" "参数,pandas会自动识别连续的空白字符(多个空格、制表符都支持)作为分隔符,同时自动忽略行首、行尾的多余空白
  • 显式指定分隔符为匹配任意长度空白的正则表达式,兼容性更好,适合格式不那么规整的空格分隔文本文件

修改后的读取代码如下,后续你的数据处理逻辑完全不需要改动:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 推荐显式指定sep为正则\s+,适配多空格分隔的场景
df = pd.read_table('D:/Tareas/Malla.txt', header=0, sep=r'\s+')

# Densidad
Z = df.loc[:, 'z']
# oxígeno
O3_0 = df.loc[:4, 'OIII'] 
O3_1 = df.loc[5:9, 'OIII'] 
# Nitrógeno
N2_0 = df.loc[:4, 'NII']
N2_1 = df.loc[5:9, 'NII'] 
# Alpha
Halpha_0 = df.loc[:4, 'Ha'] 
Halpha_1 = df.loc[5:9, 'Ha'] 

# Todos
allyO = df.loc[:, 'OIII']
allxN = df.loc[:, 'NII']
allxHa = df.loc[:, 'Ha']

ex = np.log10(allxN/allxHa)
ey = np.log10(allyO)
补充提示

你贴的文件片段中表头和第一行数据之间有空行也不会影响解析,read_table默认开启skip_blank_lines=True参数,会自动跳过文件中的空行。
读取完成后可以执行print(df.columns)和print(df.head())快速检查,确认列名、数据对应关系正确即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 18:54:28