docs: def _collate_results(self, field=None):
          """For a list of objects associated with a classification result, return the results as a
          DataFrame and dict of taxa info.
  
          Parameters
          ----------
          field : {'readcount_w_children', 'readcount', 'abundance'}
              Which field to use for the abundance/count of a particular taxon in a sample.
  
              - 'readcount_w_children': total reads of this taxon and all its descendants
              - 'readcount': total reads of this taxon
              - 'abundance': genome size-normalized relative abundances, from shotgun sequencing
  
          Returns
          -------
          None, but stores a result in self._cached.
          """
          import pandas as pd
  
          field = field if field else self._kwargs["field"]
  
          if field not in ("auto", "abundance", "readcount", "readcount_w_children"):
              raise OneCodexException("Specified field ({}) not valid.".format(field))
  
          # we'll fill these dicts that eventually turn into DataFrames
          df = {"classification_id": [c.id for c in self._classifications]}
  
          tax_info = {"tax_id": [], "name": [], "rank": [], "parent_tax_id": []}
  
          if field == "auto":
              field = "readcount_w_children"
  
          self._cached["field"] = field
  
          for c_idx, c in enumerate(self._classifications):
              # pulling results from mainline is the slowest part of the function
              result = c.results()["table"]
  
              # d contains info about a taxon in result, including name, id, counts, rank, etc.
              for d in result:
                  d_tax_id = d["tax_id"]
  
                  if d_tax_id not in tax_info["tax_id"]:
                      for k in ("tax_id", "name", "rank", "parent_tax_id"):
                          tax_info[k].append(d[k])
  
                      # first time we've seen this taxon, so make a vector for it
                      df[d_tax_id] = [0] * len(self._classifications)
  
                  df[d_tax_id][c_idx] = d[field]
  
          # format as a Pandas DataFrame
          df = pd.DataFrame(df).set_index("classification_id").fillna(0)
  
          df.columns.name = "tax_id"
  
          tax_info = pd.DataFrame(tax_info).set_index("tax_id")
  
          self._cached["results"] = df
          self._cached["taxonomy"] = tax_info