2016-04-25 309 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'])