python - 使用 pandas.read_csv 跳过多行

标签 python python-3.x pandas csv

我正在分块读取一个大的 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/

相关文章:

python - 将媒体从 Heroku 上传到 Amazon S3

python - 导入错误 : cannot import name '_ColumnEntity' Ubuntu20. 10

python - bash 和 python 管道的区别

python - 如何用python脚本计算汇率

python - 在 Pandas 计算中处理除以零

python-3.x - 我怎样才能从二进制图像中分离出细胞

Python Key Error 过滤 MySQL

python - 根据其他列中包含的字符串为列分配条件值

python - 具有长嵌套条件的 pandas 查找

python - pandas 根据上一列获取计数