2017-02-09 134 views
0

一个专栏中,我有一个具有以下格式熊猫阅读CSV忽略逗号分隔,每行

a 1 blah 
b 2 blah,inc 
c 3 foo,inc 

我想用read_csv()读取到一个df一个txt文件,但逗号给我的错误,我不想跳过error_bad_lines=False

如何将它读入df每行一列?或者我应该使用另一种方法?

+1

尝试'sep ='\ s +''或参数'delim_whitespace = True' – jezrael

回答

2

我想你需要更改默认的分隔,s\+为空白SEP:

import pandas as pd 
from pandas.compat import StringIO 

temp=u""" 
a 1 blah 
b 2 blah,inc 
c 3 foo,inc""" 
#after testing replace 'StringIO(temp)' to 'filename.csv' 
df = pd.read_csv(StringIO(temp), sep='\s+', header=None, names=['a','b','c']) 
print (df) 
    a b   c 
0 a 1  blah 
1 b 2 blah,inc 
2 c 3 foo,inc 

对于一列使用一些分离器是不是在数据像|¥

temp=u""" 
a 1 blah 
b 2 blah,inc 
c 3 foo,inc""" 
#after testing replace 'StringIO(temp)' to 'filename.csv' 
df = pd.read_csv(StringIO(temp), sep='|', header=None, names=['a']) 
print (df) 
       a 
0  a 1 blah 
1 b 2 blah,inc 
2 c 3 foo,inc 

read_fwf的另一解决方案:

df = pd.read_fwf(StringIO(temp), header=None, colspecs=[(0, 100)]) 

print (df) 
       0 
0  a 1 blah 
1 b 2 blah,inc 
2 c 3 foo,inc 
+0

我猜数据处理方法没有什么危险,因为你永远不知道数据会是什么。但它现在工作。 – jason

+0

是的,这取决于数据。但我认为明显的'¥'不在数据中。 – jezrael

+0

我添加了另一个解决方案,请检查 - [docs](http://pandas.pydata.org/pandas-docs/stable/io.html#files-with-fixed-width-columns) – jezrael

1

我认为pd.read_csv(delim_whitespace=True),应该做的伎俩。