Pandas:多次迭代块[duplicate]

rbpvctlc  于 2023-01-07  发布在  其他
关注(0)|答案(1)|浏览(160)
    • 此问题在此处已有答案**:

Why can't I iterate twice over the same iterator? How can I "reset" the iterator or reuse the data?(5个答案)
1年前关闭。
我曾经把一段CSV读成一段段一段地读给Pandas听:

loansTFR = pd.read_csv('loans_2007.csv', chunksize=3000)

我像这样迭代:

for chunk in loansTFR:
    #run code

然而,如果我想用第二个for循环再次迭代这些块,循环中的代码不会执行。这些块已经被迭代过了,我不能再读一遍。我需要再读一遍csv来使用另一个for循环吗?

sgtfey8w

sgtfey8w1#

就像其他人告诉你的那样,迭代器已经到达了末尾,will not reset,因此你可以像这样预先做一个副本:

loansTFR = pd.read_csv('loans_2007.csv', chunksize=3000)

chunks1 = loansTFR.get_chunks()
chunks2 = loansTFR.get_chunks()

for chunk in chunks1 :
    #run code
for chunk in chunks2 :
    #run code

或重新运行阅读文件

loansTFR = pd.read_csv('loans_2007.csv', chunksize=3000)
for chunk in loansTFR :
    #run code

loansTFR = pd.read_csv('loans_2007.csv', chunksize=3000)
for chunk in loansTFR :
    #run code

这两种方法都将在内存中创建它的副本,因此您不应该担心它会或多或少地占用资源(广义上),但一个好的做法是读取原始循环中的数据,并从所有数据(从您自己创建的类)中创建对象,然后将它们插入到一个数组中,然后您可以根据需要进行迭代。
也可以将两个循环的逻辑结合起来,两次运行中的数据都是相同的。

相关问题