修改了一晚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')
网友评论