code: func (p *DataFrame) newIterDataFrame(length int, i int, key interface{}) *DataFrame {
  	result := p.Copy()
  
  	result.Set("index", i)
  	result.Set("key", key)
  	result.Set("first", i == 0)
  	result.Set("last", i == length-1)
  
  	return result
  }
docs: // newIterDataFrame instanciates a new private data frame with receiver as parent and with iteration data set (@index, @key, @first, @last)