2017-02-28 75 views
3

我有了第一線的評論的文件,隨後兩線跨越他們slippted頭的名稱和第三線與索引的名稱。該文件看起來像這樣:如何讀取CSV多行成一個單一的數據幀一行熊貓

# 3 5 <-- this is a comment indicating how many rows and column are matrix data 
head1 head2 head3 
head4 head5 
idx1 idx2 idx3 

1.1 1.2 1.3 
1.4 1.5 
2.1 2.2 2.3 
2.4 2.5 
3.1 3.2 3.3 
3.4 3.5 

我怎樣才能讀取與熊貓的文件,以便有一個像這樣的數據框?

 head1 head2 head3 head4 head5 
idx1 1.1 1.2 1.3 1.4 1.5 
idx2 2.1 2.2 2.3 2.4 2.5 
idx3 3.1 3.2 3.3 3.4 3.5 
+0

這是一個很自定義要求。我建議閱讀python中的csv。根據需要解析。從讀取值創建一個數據幀。 –

+0

謝謝你的回覆。拿掉文本文件結構,是否有任何選項可以將兩行讀到一行中並使用熊貓?在消極的情況下,我會完全解析它,然後創建一個DataFrame。 –

回答

4

可以以創建一個數據幀指定的read_csvskiprows關鍵字包含所有3值線(通過跳過2值的),然後創建包含所有2-另一個數據幀價值線。請注意,您可以使用header關鍵字指定標題行。

所以,你可以在可concatenate稍後解析csv文件分爲兩個不同的數據幀。

作爲實例(假定3個值線是偶數行號和2值行是奇數行號):

df3 = pd.read_csv(..., skiprows=filter(lambda x: x%2 == 1, range(N))) 
df2 = pd.read_csv(..., skiprows=filter(lambda x: x%2 == 0, range(N))) 

然後可以使用concat爲了將兩者連接起來的數據幀到一個單一個:

df = pd.concat((df3, df2)) 
+0

謝謝你的回覆。這個想法很棒!我用'concat'將最後一行改爲'df = pd.concat([df2,df3],axis = 1)'' –