问题描述:
我有一个非常大的csv文件与millions of rows和我需要的行号列表rownumberList = [1,2,5,6,8,9,20,22]
我知道有一种叫做skiprows的东西有助于在reading csv file那样跳过几行df = pd.read_csv('myfile.csv',skiprows = skiplist)#skiplist would contain the total row list deducts rownumberList
但是,由于csv文件非常大,直接选择我需要的行可能更有效。所以我想知道使用select rows时有什么方法可以使用read_csv吗?之后不尝试使用dataframe选择行,因为我尝试最小化读取文件的时间。谢谢。
解决方法:
有一个名为nrows : int, default None的参数要读取的文件行数。用于阅读大型文件(Docs)pd.read_csv(file_name,nrows=int)
如果您需要中间的某些部分。在skiprows中同时使用nrows和read_csv。如果跳过表示开始行,nrows将指示跳过后的下一行数。
例:pd.read_csv('../input/sample_submission.csv',skiprows=5,nrows=10)
这将从第6行到第16行选择数据
根据评论进行编辑:
由于有一个列表,这个可能会有帮助,即li = [1,2,3,5,9]r = [i for i in range(max(li)) if i not in li]df = pd.read_csv('../input/sample_submission.csv',skiprows=r,nrows= max(li))# This will skip the rows you dont want as well as limit the number of rows to maximum of the list.