Python pandas read_csv区段结束标志

Python pandas read_csv区段结束标志,python,pandas,Python,Pandas,是否有一种智能/简单的方法告诉pandas中的read_csv在某个“部分结束”标志后不要加载数据?或者当它到达空行时停止 data = pd.read_csv(path, **params) eos_line = (data['id'] == eos_string).idxmax() data = data.drop(range(eos_line-2, data.shape[0])) 我觉得他们的方式应该更好。不幸的是,在调用read_csv之前,我不知道要跳过的行数或页脚长度。数据看起来大

是否有一种智能/简单的方法告诉pandas中的read_csv在某个“部分结束”标志后不要加载数据?或者当它到达空行时停止

data = pd.read_csv(path, **params)
eos_line = (data['id'] == eos_string).idxmax()
data = data.drop(range(eos_line-2, data.shape[0]))
我觉得他们的方式应该更好。不幸的是,在调用read_csv之前,我不知道要跳过的行数或页脚长度。数据看起来大致类似于

1,2,3
4,5,6


dont want any data after this line
7,8,9
10,11,12

(注意,-2是b/c,在段字符串的结尾之前实际上有2个空行,但是如果read_csv只读取到这一点,我猜dropna()会毫不费力地删除这两行)

Wes确实想到了一切

In [40]: data = """A,B,C
   ....: 1,2,3
   ....: 4,5,6
   ....: 7,8,9
   ....: want to skip this
   ....: also also skip this
   ....: """

In [41]: read_csv(StringIO(data), skip_footer=2)
Out[41]: 
   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9

韦斯什么都想到了

In [40]: data = """A,B,C
   ....: 1,2,3
   ....: 4,5,6
   ....: 7,8,9
   ....: want to skip this
   ....: also also skip this
   ....: """

In [41]: read_csv(StringIO(data), skip_footer=2)
Out[41]: 
   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9

一种选择是使用nrows,但您需要事先知道……您并没有告诉我们如何识别要排除的行:是简单的(nrows-2),还是我们应该检测2个或更多连续的换行符,或者什么?您是对的,很好。我想两个连续的换行符(所以一个“空白”行)就是我在想的。一个选项是使用nrows,但你需要事先知道……你没有告诉我们你是如何识别要排除的行的:是简单的(nrows-2),还是我们应该检测两个或更多的连续换行符,或者什么?你说得对,很好。我想我在想两个连续的换行符(所以是一个“空白”行)。我可能是误解了,但我理解OP——特别是
eos_行
行——我认为问题更像是“7,8,9/想停在这里/10,20,30/40,50,60/70,80,90”我们不知道节尾字符串在哪里。你是对的,但你可以做
跳过\u footer=nrows-section\u length-2
,虽然不理想,但会起作用,目前对csv节的支持不多数据如DSM所说,不幸的是我不知道nrows,节的长度或页脚的长度…最好的办法是在节上拆分文件,然后分别创建新文件进行处理。prob可以支持一个section关键字来自动执行此操作,但这不是小事,我可能会误解,但正如我所理解的OP——特别是
eos_行
行——我认为问题更像是“7,8,9/想停在这里/10,20,30/40,50,60/70,80,90”我们不知道节尾字符串在哪里。你是对的,但你可以做
跳过\u footer=nrows-section\u length-2
,虽然不理想,但会起作用,目前对csv节的支持不多数据如DSM所说,不幸的是我不知道nrows,节的长度或页脚的长度…最好的办法是在节上拆分文件,然后分别创建新文件进行处理。prob可以支持一个section关键字来自动完成这项工作,但它并不简单