我有一个非常大的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,因为我想将数据读入数据帧。
答案 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)