class_docstr: A version of RollingPanel that exists for backwards compatibility with
  batch_transform. This is a copy to allow behavior of RollingPanel to drift
  away from this without breaking this class.
  
  This code should be considered frozen, and should not be used in the
  future. Instead, see RollingPanel.
class_docstr_tok: ["A","version","of","RollingPanel","that","exists","for","backwards","compatibility","with","batch_transform",".","This","is","a","copy","to","allow","behavior","of","RollingPanel","to","drift","away","from","this","without","breaking","this","class",".","This","code","should","be","considered","frozen",",","and","should","not","be","used","in","the","future",".","Instead",",","see","RollingPanel","."]
code: def _update_buffer(self, frame):
      # Get current frame as we only need to care about the data that is in
      # the active window
      old_buffer = self.get_current()
      if self._pos >= self._window:
          # Don't count the last major_axis entry if we're past our window,
          # since it's about to roll off the end of the panel.
          old_buffer = old_buffer.iloc[:, 1:, :]
  
      nans = pd.isnull(old_buffer)
  
      # Find minor_axes that have only nans
      # Note that minor is axis 2
      non_nan_cols = set(
          old_buffer.minor_axis[~np.all(nans, axis=(0, 1))]
      )
      # Determine new columns to be added
      new_cols = set(frame.columns).difference(non_nan_cols)
      # Update internal minor axis
      self.minor_axis = _ensure_index(new_cols.union(non_nan_cols))
  
      # Same for items (fields)
      # Find items axes that have only nans
      # Note that items is axis 0
      non_nan_items = set(old_buffer.items[~np.all(nans, axis=(1, 2))])
      new_items = set(frame.index).difference(non_nan_items)
      self.items = _ensure_index(new_items.union(non_nan_items))
  
      # :NOTE:
      # There is a simpler and 10x faster way to do this:
      #
      # Reindex buffer to update axes (automatically adds nans)
      # self.buffer = self.buffer.reindex(items=self.items,
      #                                   major_axis=np.arange(self.cap),
      #                                   minor_axis=self.minor_axis)
      #
      # However, pandas==0.12.0, for which we remain backwards compatible,
      # has a bug in .reindex() that this triggers. Using .update() as before
      # seems to work fine.
  
      new_buffer = self._create_buffer()
      new_buffer.update(self.buffer.loc[non_nan_items, :, non_nan_cols])
  
      self.buffer = new_buffer
  
imports: import datetime
  from copy import deepcopy
  import numpy
  import pandas
label_desc: Use image node_id 11 for calling the MutableIndexRollingPanel obj's underlying member method code with example usage: obj._update_buffer(frame) without return types