Python pandas read_csv区段结束标志
是否有一种智能/简单的方法告诉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之前,我不知道要跳过的行数或页脚长度。数据看起来大
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关键字来自动完成这项工作,但它并不简单