如何部分读取一个巨大的CSV文件?

2024-09-25 04:29:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的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,因为我想将数据读入数据框。


Tags: 文件csv数据函数内存txtnonepandas
2条回答

使用^{}

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行,不清楚您是否需要包括端点,但您可以修改数字,以得到您想要的。

除了EdChums answer之外,我还发现nrows参数非常有用,它只定义了要导入的行数。因此,您不会得到迭代器,而是可以只导入整个文件的一部分,大小为nrows。它也适用于skiprows

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

相关问题 更多 >