如何部分阅读巨大的CSV文件?

lse*_*ohn 29 python pandas

我有一个非常大的csv文件,所以我无法将它们全部读入内存.我只想阅读并处理其中的几行.所以我在Pandas中寻找一个可以处理这个任务的函数,基本的python可以很好地处理这个:

with open('abc.csv') as f:
    line = f.readline()
    # pass until it reaches a particular line number....
Run Code Online (Sandbox Code Playgroud)

但是,如果我在熊猫中这样做,我总是阅读第一行:

datainput1 = pd.read_csv('matrix.txt',sep=',', header = None, nrows = 1 )
datainput2 = pd.read_csv('matrix.txt',sep=',', header = None, nrows = 1 )
Run Code Online (Sandbox Code Playgroud)

我正在寻找一些更简单的方法来处理熊猫中的这个任务.例如,如果我想读取1000到2000的行.我该如何快速完成?

我想使用pandas,因为我想将数据读入数据帧.

EdC*_*ica 51

用途chunksize:

for df in pd.read_csv('matrix.txt',sep=',', header = None, chunksize=1):
    #do something
Run Code Online (Sandbox Code Playgroud)

回答你的第二部分做到这一点:

df = pd.read_csv('matrix.txt',sep=',', header = None, skiprows=1000, chunksize=1000)
Run Code Online (Sandbox Code Playgroud)

这将跳过前1000行,然后只读取接下来的1000行,给你1000-2000行,不清楚你是否需要包括终点,但你可以调整数字来得到你想要的.


pet*_*ich 9

除了EdChums之外,如果发现该nrows参数有用,它只是定义了您想要导入的行数.因此,您不会获得迭代器,而只能导入整个文件大小的一部分nrows.它也适用skiprows.

df = pd.read_csv('matrix.txt',sep=',', header = None, skiprows= 1000, nrows=1000)
Run Code Online (Sandbox Code Playgroud)