class_docstr: Data handling class which knows how to reattach pandas metadata to model
  results
class_docstr_tok: ["Data","handling","class","which","knows","how","to","reattach","pandas","metadata","to","model","results"]
code: def attach_generic_columns_2d(self, result, rownames, colnames=None):
      colnames = colnames or rownames
      rownames = getattr(self, rownames, None)
      colnames = getattr(self, colnames, None)
      return DataFrame(result, index=rownames, columns=colnames)
  
imports: from __future__ import annotations
  from statsmodels.compat.python import lmap
  from functools import reduce
  import numpy
  from pandas import DataFrame, Series, isnull, MultiIndex
  import statsmodels.tools.data
  from statsmodels.tools.decorators import cache_readonly, cache_writable
  from statsmodels.tools.sm_exceptions import MissingDataError
label_desc: Use image node_id 7 for calling the PandasData obj's underlying member method code with example usage: obj.attach_generic_columns_2d(result, rownames, colnames) and returns: DataFrame