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
相关产品推荐
相关产品推荐

