2018-09-05 关于pandas.read_csv读入txt文件的结局

修改了一晚IO问题,以添加一个“+”解决

pandas

采用read_csv、read_table对txt文档进行读入,读入成DataFrame格式

1 2 3 4 5 

6 7 8 9 10 

11 12 13 14 15 

文件无columns,无index

不妨设列名 col = ['a','b','c','d','e']

问题的关键在于index

但是当采用read_table读入时(以空格作为分隔符),出现了index指向错误

test = pd.read_table('test.txt', names = ['a','b','c','d','e'], sep = ' ')

读入的test为


即原本的数据第一列被错误的判定为index,而在最后补充了NaN

出现这个bug的原因是:

“test.txt”每一行的结尾多了一个空格" ",一个肉眼看不见的空格!

当read_csv遇到这个空格时,会默认的多读入一个元素NaN

而通过names将DataFrame设定为5列,read_csv便很智能(zhang)的将第一列作为index,并补入了NaN作为结尾。


解决方式:


多写一个加号“+”,注意+前面有一个空格,通过正则的方式,将多个空格的状况过滤,即把最后的空格和换行符合并过滤,同时也防止了数据中间出现两个空格的情况

sep = ' +'

当然,使用多个字符作为分隔符,就必须得指定采用python引擎进行解释,因为C引擎只支持单字符

train = pd.read_table('train.txt',names = col, sep = ' +', engine='python')

你可能感兴趣的:(2018-09-05 关于pandas.read_csv读入txt文件的结局)