2017-02-09 138 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),應該做的伎倆。