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

时间:2015-03-29 20:29:18

标签: python pandas

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

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

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

datainput1 = pd.read_csv('matrix.txt',sep=',', header = None, nrows = 1 )
datainput2 = pd.read_csv('matrix.txt',sep=',', header = None, nrows = 1 )

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

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

2 个答案:

答案 0 :(得分:42)

使用chunksize

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

要回答你的第二部分,请执行以下操作:

df = pd.read_csv('matrix.txt',sep=',', header = None, skiprows=1000, chunksize=1000)

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

答案 1 :(得分:5)

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

df = pd.read_csv('matrix.txt',sep=',', header = None, skiprows= 1000, nrows=1000)