2016-04-25 310 views
1

我有一個文件(示例如下所示),它具有多個CSV表格。這個文件被上傳到數據庫。我想對這個文件做一些操作。爲此,我正在考慮使用pandas使用read_csv函數將每個表讀入單獨的數據框。但是,通過文檔,我沒有看到一個選項來指定要讀取/解析的行的子集。這可能嗎?如果不是,還有其他的選擇嗎?熊貓:read_csv(讀取單個文件中的多個表格)

示例文件:

TABLE_1 
col1,col2 
val1,val2 
val3,val4 

TABLE_2 
col1,col2,col3,col4 
val1,val2,val3,val4 
... 

... 

我可以通過文件執行初始通來確定每個表的開始/結束線。但是,read_csv參數之一是「filepath_or_buffer」,但我並不完全確定'buffer'部分是什麼。它是一個字符串或一個大字符串或其他東西的列表?我可以使用什麼緩衝區?有人可以指出一個使用read_csv和緩衝區的小例子嗎?感謝您的任何想法。

+2

它可以讀取該類型與'read.csv'使用'skip'和'nrow'參數文件。第一步是運行'readLines'並找出表格之間的差距。如果存在一致性,則有助於 –

回答

1

UPDATE:

如果你想跳過特定行 [0,1,5,16,57,58,59]

,您可以使用skiprows

df = pd.read_csv(filename, header=None, 
       names=['col1','col2','col3'], skiprows=[0,1,5,16,57,58,59]) 

跳過前兩行和閱讀下面100行,你可以使用skiprowsnrows參數@理查德·特爾福德在評論中提到:

df = pd.read_csv(filename, header=None, names=['col1','col2','col3'], 
       skiprows=2, nrows=100) 

這裏是一個小例子「bu FFER「:

import io 
import pandas as pd 

data = """\ 
     Name 
0 JP2015121 
1 US14822 
2 US14358 
3 JP2015539 
4 JP2015156 
""" 
df = pd.read_csv(io.StringIO(data), delim_whitespace=True, index_col=0) 
print(df) 

同一無標頭:

data = """\ 
0 JP2015121 
1 US14822 
2 US14358 
3 JP2015539 
4 JP2015156 
""" 
df = pd.read_csv(io.StringIO(data), delim_whitespace=True, index_col=0, 
       header=None, names=['Name'])