如何使用 python 只读取 .csv 中特定范围的行?
How can I use python to read only a certain range of lines in a .csv?
我正在尝试处理一个巨大的 .csv 文件,但我不需要前 ~900000 行数据。这就是我最初试图摆脱那块数据的方式,但它使程序永远无法完成。有没有更直接的方法来做到这一点,我什至没有首先阅读前 900000 行?
firstColumn = [ ]
secondColumn = [ ]
thirdColumn = [ ]
readFile = input("Enter name of file to be read: ")
with open(readFile,'r') as readFile:
for eachline in readFile: # converting columns to lists
parts = eachline.strip('\n').split(',')
firstColumn.append(parts[0])
secondColumn.append(parts[1])
thirdColumn.append(parts[2])
for j in range(900000): # nothing happens for these datapoints
del firstColumn[j]
del secondColumn[j]
del thirdColumn[j]
您可以通过执行以下操作来跳过初始行:
with open(readFile, 'r') as f:
# skip first 900,000 lines
for _ in range(900000):
next(f)
for line in f:
parts = line.strip('\n').split(',')
firstColumn.append(parts[0])
secondColumn.append(parts[1])
thirdColumn.append(parts[2])
你是对的;那是糟糕。转换你不打算使用的 900K 行输入是很愚蠢的。相反,完全跳过它们:
# read past first 900K lines
with open(readFile,'r') as readFile:
for _ in range(900000):
readFile.readline()
for eachline in readFile: # converting columns to lists
# Continue as before
完成后,我强烈建议您切换到 csv reader 来获取文件的其余部分;您可以从那里通过简单的操作构建数据框。请注意不要关闭并重新打开文件,否则会重置文件头信息。
您可以使用 pandas,它可以制作副本 .csv 文件,并在副本中删除那些行。首先为您的文件制作一个数据框,然后您可以使用 .iloc[] 将行索引放入您想要开始的位置。这将在您要剪切的行之后。像字符串一样解析它。
我正在尝试处理一个巨大的 .csv 文件,但我不需要前 ~900000 行数据。这就是我最初试图摆脱那块数据的方式,但它使程序永远无法完成。有没有更直接的方法来做到这一点,我什至没有首先阅读前 900000 行?
firstColumn = [ ]
secondColumn = [ ]
thirdColumn = [ ]
readFile = input("Enter name of file to be read: ")
with open(readFile,'r') as readFile:
for eachline in readFile: # converting columns to lists
parts = eachline.strip('\n').split(',')
firstColumn.append(parts[0])
secondColumn.append(parts[1])
thirdColumn.append(parts[2])
for j in range(900000): # nothing happens for these datapoints
del firstColumn[j]
del secondColumn[j]
del thirdColumn[j]
您可以通过执行以下操作来跳过初始行:
with open(readFile, 'r') as f:
# skip first 900,000 lines
for _ in range(900000):
next(f)
for line in f:
parts = line.strip('\n').split(',')
firstColumn.append(parts[0])
secondColumn.append(parts[1])
thirdColumn.append(parts[2])
你是对的;那是糟糕。转换你不打算使用的 900K 行输入是很愚蠢的。相反,完全跳过它们:
# read past first 900K lines
with open(readFile,'r') as readFile:
for _ in range(900000):
readFile.readline()
for eachline in readFile: # converting columns to lists
# Continue as before
完成后,我强烈建议您切换到 csv reader 来获取文件的其余部分;您可以从那里通过简单的操作构建数据框。请注意不要关闭并重新打开文件,否则会重置文件头信息。
您可以使用 pandas,它可以制作副本 .csv 文件,并在副本中删除那些行。首先为您的文件制作一个数据框,然后您可以使用 .iloc[] 将行索引放入您想要开始的位置。这将在您要剪切的行之后。像字符串一样解析它。