Python读取制表符分隔文件:如何拆分列并去除制表符?
解决制表符/空白分隔文件的解析问题
嘿,作为Python新手遇到这种数据解析问题很正常,我来帮你搞定!
问题根源
你当前的代码里,pd.read_csv()默认是用逗号作为字段分隔符,但这个种子数据集的文件是用制表符或多个空格来分隔值的,所以所有数据都被挤到了同一列里,就出现了你看到的当前效果。
修正后的代码
只需要给read_csv()加上几个关键参数就能解决问题,同时我们可以给数据集加上对应的列名(原文件没有表头):
import pandas as pd import io import requests url = "https://archive.ics.uci.edu/ml/machine-learning-databases/00236/seeds_dataset.txt" s = requests.get(url).content # 用\s+匹配任意空白字符(制表符/空格都适用),header=None表示无表头 df = pd.read_csv(io.StringIO(s.decode('utf-8')), sep='\s+', header=None) # 给数据集添加列名(根据UCI数据集说明) df.columns = [ "area", "perimeter", "compactness", "length_of_kernel", "width_of_kernel", "asymmetry_coefficient", "length_of_groove", "type" ] # 查看前几行验证效果 print(df.head())
参数说明
sep='\s+':告诉pandas用任意数量的空白字符(包括制表符\t、单个或多个空格)作为分隔符,完美适配这个数据集的格式;header=None:因为原文件没有第一行作为表头,所以让pandas不要把第一行数据识别为列名;- 手动设置
df.columns:让数据集的列更有意义,方便后续分析。
这样处理后,数据就会自动拆分到不同的列中,和你期望的效果一致啦!
内容的提问来源于stack exchange,提问作者jkhammerseth
相关产品推荐
相关产品推荐

