Я читаю пять огромных файлов CVS. Все они имеют одинаковое количество строк, но количество строк в миллионах. Из-за ограничения памяти мне нужно их прочитать в партиях и впоследствии объединить данные из разных файлов в один Dataframe.Как передать список итераторов pandas в качестве аргумента для zip?
Ниже то, что я сейчас:
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
в качестве аргумента вместо того, чтобы указывать все элементы внутри него, потому что я не смог бы узнать, сколько элементов есть в list_iterators
, когда я пишу свою программу.
Мой второй вопрос заключается в том, что вместо использования __next__()
существует ли более элегантный способ извлечения данных из итераторов pandas.