title: yield doesn't work with pandas.DataFrame.itertuples()?
body: <p>It seems that <code>yield</code> doesn't work with <code>pandas.DataFrame.itertuples()</code>, why?</p>
  
  <pre><code> dates = pd.date_range('20130101', periods=6)     
   df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
  
   def f():
     for r in df.itertuples():
       yield r
  
   print(f().next())
   print(f().next())
  </code></pre>
  
  <p>The 1st row got outputted twice.</p>
  
  <p><strong>EDIT</strong></p>
  
  <p>source code:</p>
  
  <pre><code>  DataHandler(object):
       def __init__(self, csv_dir):
          self.csv_dir = csv_dir
          self.data = pd.DataFrame()
          self._open_convert_csv_files()
  
       def _open_convert_csv_files(self):
          self.data = pd.read_csv(self.csv_dir)
  
       def _get_new_row(self):
          for t in self.data.itertuples():
             yield t
  
       def get_N_rows(self, N=1):
            list = []
            for i in range(N):
               row = self._get_new_row().next() # problem is here
               list.append(row)
            return list
  </code></pre>
  
  <p>I am calling <code>self._get_new_row()</code> in <code>get_N_rows</code>, which is the problem, every time I call <code>_get_new_row()</code> I only get the 1st row, how would I make <code>g = _get_new_row()</code> for <code>g</code> as a member?</p>