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

ryevplcw  于 2022-12-25  发布在  其他
关注(0)|答案(2)|浏览(229)

我有一个很大的csv文件,所以我不能把它们全部读入内存。我只想读取和处理其中的几行。所以我在Pandas中寻找一个函数来处理这个任务,基本的python可以很好地处理这个任务:

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

但是,如果我在Pandas身上这样做,我总是读到第一行:

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

我正在寻找一些更简单的方法来处理Pandas中的这个任务。例如,如果我想读从1000到2000的行。我怎样才能快速地做到这一点?
我想使用Pandas,因为我想把数据读入 Dataframe 。

fjnneemd

fjnneemd1#

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

l7mqbcuq

l7mqbcuq2#

除了EdChums的答案之外,我发现nrows参数很有用,它只定义了您希望使用pandas' read_csv()导入的行数。
这样你就不会得到一个迭代器,而是可以导入整个nrows文件的一部分,它也可以用于skiprows

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

相关问题