2017-05-04 64 views
2

解析一個txt文件,它使用'#@#@#'作爲改變行,'〜'作爲列分隔。我仍然可以使用pd.read_csv()來解析它以獲取DataFrame嗎?大熊貓解析文本文件,改變行號和分隔符

+1

看的規格,有一個lineterminator選項和分隔符選項:HTTP://大熊貓.pdata.org/pandas-docs/stable/generated/pandas.read_csv.html – TLOwater

+2

lineterminator的長度必須是1,所以可以使用'df = pd.read_csv(filename,lineterminator ='#',sep ='〜 ')'? – jezrael

回答

2

有lineterminator的主要問題長度必須1,所以是read_csv後可能使用過濾:

temp=u"""a~h~h#@#@#a~h~h#@#@#""" 
#after testing replace 'StringIO(temp)' to 'filename.csv' 
df = pd.read_csv(StringIO(temp), lineterminator='#', sep='~', header=None) 
print (df) 
    0 1 2 
0 a h h 
1 @ NaN NaN 
2 @ NaN NaN 
3 a h h 
4 @ NaN NaN 
5 @ NaN NaN 

df = df[df.iloc[:,0] != '@'] 
print (df) 
    0 1 2 
0 a h h 
3 a h h