我正在分块读取一个大的 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,并继续读取所有行)。请帮我找出我做错了什么。
最佳答案
代码:
ro = list(range(0, lengthOfFile + 10, 10))
d = [j + 1 for i in range(1, len(ro), 2) for j in range(ro[i], ro[i + 1])]
# print(ro)
print(d)
pd.read_csv('../input/train.csv',chunksize=10, dtype=dtypes,skiprows=d)
例如:
lengthOfFile = 100
ro = list(range(0, lengthOfFile + 10, 10))
d = [j for i in range(1, len(ro), 2) for j in range(ro[i], ro[i + 1])]
print(d)
输出:
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 50, 51, 52, 53、54、55、56、57、58、59、70、71、72、73、74、75、76、77、78、79、90、91、92、93、94、95、96、97、 98, 99]
关于python - 使用 pandas.read_csv 跳过多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54765376/