2015-02-11 108 views
0

我使用的文本文件包含前6行中的一些基本信息,包括空行。我必須導入,處理並將數據導出到另一個csv。這是第一個6行的一個示例:熊貓 - read_table讀取選定的行

Foov7.9 - bar.raw created at 10:45:25 on 10.02.2015: 
(empty row) 
(empty row) 
A B C D 
a b c d 
(empty row) 

在熊貓我使用4行:

A B C D 

作爲用於數據幀報頭:

data1 = pd.read_table(dataset1,header = 1, skiprows = (4,5), index_col=None, delimiter=r"\t", engine='python') 

當處理後寫入to_csv我現在想要放回前6行的數據,但是在讀取行時我已經失敗。通過將第4行的頭文件單獨寫入csv,我將失去所有附加信息。 如何讀取這些行並稍後將其放回到csv中而不干擾數據幀頭?

+0

行5和行6是否應該包含在數據體中?速度優化至關重要? – Klaster 2015-02-11 15:00:30

+0

對於處理,我使用A B C D(即第4行)作爲colindex。然而,在數據主體開始於第7行之前,行1(一般信息),2和3(均爲空),4(當前colindex)5(即colindex的單位)和6(空)應位於後面的輸出文件中。不管... – mati 2015-02-11 19:13:59

+0

好的,理解。看到我的答案爲解決方案。反饋讚賞! :) – Klaster 2015-02-13 14:09:18

回答

0

有最有可能是一個更整潔的方式做到這一點,但它的工作原理,它只能讀取數據一次,對性能:

(1)讀取數據

in_df = pd.read_excel("test.xls", header=0) 

(2)創建爲一個頭以後

header = in_df[:5] #only first rows 

(3)保存的concat以後

cols = list(header.columns.values) #a list with headers 
的標題列

(4),用於數據處理創建一個副本

data = in_df 
data.rename(columns=in_df.iloc[2,:], inplace=True) # rename your columns 
data = data[5:]     # you want just the data body 
data = data.reset_index(drop = True) # reindex 

#DO WHATEVER WITH DATA 

(5)輸出:CONCAT [頭&數據。寫輸出

data.columns = cols  # we need the old col names for concat 
out_df = pd.concat([header,data]) # do the concat 
out_df = out_df.reset_index(drop = True) # reset index (if you want to) 
out_df.to_csv("out.csv") #write it. out_df.to_csv("out.csv", index = False) if you don't want index in output