【问题标题】:How to pass in a list of pandas' iterators as the argument for zip?如何将 pandas 的迭代器列表作为 zip 的参数传递?
【发布时间】:2016-12-23 17:15:42
【问题描述】:

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

下面是我现在的:

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

it3 it4 it5list_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 迭代器中检索数据。

【问题讨论】:

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


    【解决方案1】:

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

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

    ak = zip(it1, it2, *list_iterators)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-28
      • 2018-09-30
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多