docstr: Filters for releases that are on or after each simulation date and
  determines the next quarter by picking out the upcoming release for
  each date in the index.
  
  Parameters
  ----------
  stacked_last_per_qtr : pd.DataFrame
      A DataFrame with index of calendar dates, sid, and normalized
      quarters with each row being the latest estimate for the row's
      index values, sorted by event date.
  
  Returns
  -------
  next_releases_per_date_index : pd.MultiIndex
      An index of calendar dates, sid, and normalized quarters, for only
      the rows that have a next event.
docstr_tok: ["Filters","for","releases","that","are","on","or","after","each","simulation","date","and","determines","the","next","quarter","by","picking","out","the","upcoming","release","for","each","date","in","the","index",".","Parameters","--","--","--","--","--","stacked_last_per_qtr",":","pd.DataFrame","A","DataFrame","with","index","of","calendar","dates",",","sid",",","and","normalized","quarters","with","each","row","being","the","latest","estimate","for","the","row's","index","values",",","sorted","by","event","date",".","Returns","--","--","--","-","next_releases_per_date_index",":","pd.MultiIndex","An","index","of","calendar","dates",",","sid",",","and","normalized","quarters",",","for","only","the","rows","that","have","a","next","event","."]
code: def get_zeroth_quarter_idx(self, stacked_last_per_qtr):
      """
      Filters for releases that are on or after each simulation date and
      determines the next quarter by picking out the upcoming release for
      each date in the index.
  
      Parameters
      ----------
      stacked_last_per_qtr : pd.DataFrame
          A DataFrame with index of calendar dates, sid, and normalized
          quarters with each row being the latest estimate for the row's
          index values, sorted by event date.
  
      Returns
      -------
      next_releases_per_date_index : pd.MultiIndex
          An index of calendar dates, sid, and normalized quarters, for only
          the rows that have a next event.
      """
      next_releases_per_date = (
          stacked_last_per_qtr.loc[
              stacked_last_per_qtr[EVENT_DATE_FIELD_NAME]
              >= stacked_last_per_qtr.index.get_level_values(
                  SIMULATION_DATES
              )
          ]
          .groupby(
              level=[SIMULATION_DATES, SID_FIELD_NAME],
              as_index=False,
              # Here we take advantage of the fact that `stacked_last_per_qtr` is
              # sorted by event date.
          )
          .nth(0)
      )
      return next_releases_per_date.index
  
imports: from abc import abstractmethod, abstractproperty
  from interface import implements
  import numpy
  import pandas
  from six import viewvalues
  from toolz import groupby
  from zipline.lib.adjusted_array import AdjustedArray
  from zipline.lib.adjustment import Datetime641DArrayOverwrite, Datetime64Overwrite, Float641DArrayOverwrite, Float64Multiply, Float64Overwrite
  from zipline.pipeline.common import EVENT_DATE_FIELD_NAME, FISCAL_QUARTER_FIELD_NAME, FISCAL_YEAR_FIELD_NAME, SID_FIELD_NAME, TS_FIELD_NAME
  from zipline.pipeline.loaders.base import PipelineLoader
  from zipline.utils.numpy_utils import datetime64ns_dtype, float64_dtype
  from zipline.pipeline.loaders.utils import ffill_across_cols, last_in_date_group
label_desc: Use image node_id 3 for calling the NextEarningsEstimatesLoader obj's underlying member method code with example usage: obj.get_zeroth_quarter_idx(stacked_last_per_qtr) and returns: next_releases_per_date