我有一个包含多个CSV表的文件(如下所示)。此文件上载到数据库。我想对这个文件做一些操作。为此,我正在考虑使用pandas使用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 ",但我不完全确定'缓冲区'部分是。它是字符串列表还是一个大字符串或其他内容?我可以用什么缓冲区?有人能指出我使用带缓冲区的read_csv的小例子吗?谢谢你的任何想法。
答案 0 :(得分:3)
更新:
如果您想跳过特定行[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行,您可以使用skiprows
和nrows
参数,如评论中提到的@Richard Telford所示:
df = pd.read_csv(filename, header=None, names=['col1','col2','col3'],
skiprows=2, nrows=100)
这是“缓冲区”的一个小例子:
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'])