【发布时间】:2019-02-19 11:34:16
【问题描述】:
我正在读取一个大块的 csv 文件,因为我没有足够的内存来存储。我想读取它的前 10 行(0 到 9 行),跳过接下来的 10 行(10 到 19),然后读取接下来的 10 行(20 到 29 行),再次跳过接下来的 10 行(30 到 39 ) 然后读取第 40 到第 49 行,依此类推。 以下是我正在使用的代码:
#initializing n1 and n2 variable
n1=1
n2=2
#reading data in chunks
for chunk in pd.read_csv('../input/train.csv',chunksize=10, dtype=dtypes,skiprows=list(range( ((n1*10)+1), ((n2*10) +1) ))):
sample_chunk=chunk
#displaying the sample_chunk
print(sample_chunk)
#incrementing n1
n1=n1+2
#incrementing n2
n2=n2+2
但是,我认为我设计的代码不起作用。它只跳过从 10 到 19 的行(即:它读取从 0 到 9 的行,跳过 10 到 19,然后读取 20 到 29,然后再次读取 30 到 39,然后再次读取 40 到 49,并继续读取所有行)。请帮我找出我做错了什么。
【问题讨论】:
-
这是因为当你初始化
pd.read_csv时你说skiprows =[11, 12, 13, 14, 15, 16, 17, 18, 19, 20] -
使用块大小检查这个答案:stackoverflow.com/questions/25962114/…
-
@Noor 你总共有多少行?
-
@Nihal 超过 200 万行。
标签: python python-3.x pandas csv