熊猫:read_csv(在单个文件中读取多个表)

use*_*733 5 python pandas

我有一个具有多个CSV表的文件(如下所示的示例)。该文件被上载到数据库。我想对该文件进行一些操作。为此,我正在考虑使用pandas通过read_csv函数将每个表读入单独的数据框。但是,在阅读文档时,我没有看到指定要读取/解析的行的子集的选项。这可能吗?如果没有,还有其他选择吗?

样本文件:

TABLE_1
col1,col2
val1,val2
val3,val4

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

...
Run Code Online (Sandbox Code Playgroud)

我可以对文件进行初始遍历以确定每个表的开始/结束行。但是,read_csv参数之一是“ filepath_or_buffer ”,但我不确定“ buffer”部分是什么。它是字符串列表还是一个大字符串或其他东西?我可以使用什么缓冲区?有人可以指出一个使用read_csv和缓冲区的小例子吗?感谢您的任何想法。

Max*_*axU 4

更新:

如果你想跳过特定行[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])
Run Code Online (Sandbox Code Playgroud)

要跳过前两行并阅读以下 100 行,您可以使用@Richard Telford 在评论中提到的skiprows和参数:nrows

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

这是“缓冲区”的一个小例子:

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)
Run Code Online (Sandbox Code Playgroud)

没有标题的情况相同:

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'])
Run Code Online (Sandbox Code Playgroud)