- 此问题在此处已有答案**:
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循环吗?
1条答案
按热度按时间sgtfey8w1#
就像其他人告诉你的那样,迭代器已经到达了末尾,will not reset,因此你可以像这样预先做一个副本:
或重新运行阅读文件
这两种方法都将在内存中创建它的副本,因此您不应该担心它会或多或少地占用资源(广义上),但一个好的做法是读取原始循环中的数据,并从所有数据(从您自己创建的类)中创建对象,然后将它们插入到一个数组中,然后您可以根据需要进行迭代。
也可以将两个循环的逻辑结合起来,两次运行中的数据都是相同的。