如何传递大熊猫列表' zip作为参数的迭代器?

时间:2016-12-23 17:15:43

标签: python python-3.x pandas iterator readfile

我正在阅读五个巨大的CVS文件。它们都具有相同的行数,但行数以百万计。由于内存限制,我需要批量读取它们,然后将不同文件中的数据连接到一个Dataframe中。

以下是我现在所拥有的:

import pandas as pd
it1 = pd.read_csv('1.csv', chunksize=10)
it2 = pd.read_csv('2.csv', chunksize=10)

it3 it4 it5在列表list_iterators中给出。那就是:

list_iterators = [it3  it4  it5]

我想要实现的是每当我执行读操作时,我将以列表形式从所有迭代器获取数据。

所以我第一次阅读它们时,我会:

[first 10 rows in 1.csv, first 10 rows in 2.csv, first 10 rows in 3.csv ...  first 10 rows in 5.csv]

为了达到预期的效果,我现在正在做的是:

ak = zip(it1, it2, list_iterators[0], list_iterators[1], list_iterators[2])
ak.__next__() #I will call this to read the next 10 rows

我想知道是否有任何方法可以将list_iterators作为参数传递而不是拼写出其中的所有元素,因为我无法知道{中有多少元素我编写程序时{1}}。

我的第二个问题是,不是使用list_iterators,而是从 pandas 迭代器中检索数据的更优雅方式。

1 个答案:

答案 0 :(得分:0)

  

我想知道是否有任何方法可以将list_iterators作为参数传递

是的,您可以使用list_iterators运算符传递*的内容:

ak = zip(it1, it2, *list_iterators)