def METHOD_NAME(self, cached_stat, sections):
    """
    Parameters
    ----------
    cached_stat : DataFrame of cached data
    sections : list of nilmtk.TimeFrame objects
        describing the sections we want to load stats for.
    """
    if cached_stat.empty:
        return
    tz = get_tz(cached_stat)
    usable_sections_from_cache = []
    def append_row(row, section):
        row = row.astype(object)
        # We stripped off the timezone when exporting to cache
        # so now we must put the timezone back.
        row['end'] = tz_localize_naive(row['end'], tz)
        if row['end'] == section.end:
            usable_sections_from_cache.append(row)
    for section in sections:
        if not section:
            continue
        try:
            rows_matching_start = cached_stat.loc[section.start]
        except KeyError:
            pass
        else:
            if isinstance(rows_matching_start, pd.Series):
                append_row(rows_matching_start, section)
            else:
                for row_i in range(rows_matching_start.shape[0]):
                    row = rows_matching_start.iloc[row_i]
                    append_row(row, section)
    self._data = pd.DataFrame(usable_sections_from_cache)
    self._data.sort_index(inplace=True)