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

Pandas read_csv读取TXT文件列分割不正确的解决办法

解决Pandas读取TXT文件列分割错误的问题

问题描述

我有一个TXT文件,尝试用以下代码读取:

df = pd.read_csv(path, sep='\t', encoding='utf-8')

但列未正确分割,得到的结果如下(忽略索引):

"",t,I_m [A] 4.002,Tm [Nm],V_bus [V] 5.005,n [rpm] 0.010,T_inv [ºC] 7.034,T_acu [%] 4.019,f_m [Hz] 5.001,V_m [V] 5.002,P_m [kW] 5.003,n_ref [rpm] 3.001,I_m_par [A] 4.002,P_m_par [W] 5.003,Unnamed: 13
0,12:00:52,0.0,0.0,560.0,0.0,51.0,0.0,0.0,0.0,0.0,0.0,0.0,NaN,NaN
1,12:00:52,0.0,0.0,560.0,0.0,51.0,0.0,0.0,0.0,0.0,0.0,0.0,NaN,NaN
2,12:00:52,0.0,0.0,560.0,0.0,51.0,0.0,0.0,0.0,0.0,0.0,0.0,NaN,NaN
3,12:00:52,0.0,0.0,561.0,0.0,51.0,0.0,0.0,0.0,0.0,0.0,0.0,NaN,NaN
4,12:00:52,0.0,0.0,561.0,0.0,51.0,0.0,0.0,0.0,0.0,0.0,0.0,NaN,NaN

解决方案

1. 自动识别空白分隔符

你的TXT文件实际分隔符大概率是多个空格而非制表符,直接用delim_whitespace=True参数让Pandas自动识别任意空白字符(空格、制表符等)作为分隔符:

df = pd.read_csv(path, delim_whitespace=True, encoding='utf-8')

2. 用正则匹配任意数量空格

如果明确是空格分隔,也可以用正则表达式匹配任意数量的空格作为分隔符:

df = pd.read_csv(path, sep='\s+', encoding='utf-8')

3. 清理表头冗余内容

从结果看,表头带有多余的数字后缀(比如I_m [A] 4.002),如果不需要这些内容,读取后可进一步处理表头:

# 读取文件
df = pd.read_csv(path, delim_whitespace=True, encoding='utf-8')
# 清理表头,保留括号及之前的核心名称
df.columns = [col.split(' ')[0] if '[' in col else col for col in df.columns]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 11:01:33