docs: def from_dataframe(cls, dataframe):
          """Convert a pandas.DataFrame into an xarray.Dataset
  
          Each column will be converted into an independent variable in the
          Dataset. If the dataframe's index is a MultiIndex, it will be expanded
          into a tensor product of one-dimensional indices (filling in missing
          values with NaN). This method will produce a Dataset very similar to
          that on which the 'to_dataframe' method was called, except with
          possibly redundant dimensions (since all dataset variables will have
          the same dimensionality).
          """
          # TODO: Add an option to remove dimensions along which the variables
          # are constant, to enable consistent serialization to/from a dataframe,
          # even if some variables have different dimensionality.
  
          if not dataframe.columns.is_unique:
              raise ValueError(
                  'cannot convert DataFrame with non-unique columns')
  
          idx = dataframe.index
          obj = cls()
  
          if isinstance(idx, pd.MultiIndex):
              # it's a multi-index
              # expand the DataFrame to include the product of all levels
              full_idx = pd.MultiIndex.from_product(idx.levels, names=idx.names)
              dataframe = dataframe.reindex(full_idx)
              dims = [name if name is not None else 'level_%i' % n
                      for n, name in enumerate(idx.names)]
              for dim, lev in zip(dims, idx.levels):
                  obj[dim] = (dim, lev)
              shape = [lev.size for lev in idx.levels]
          else:
              dims = (idx.name if idx.name is not None else 'index',)
              obj[dims[0]] = (dims, idx)
              shape = -1
  
          for name, series in dataframe.items():
              data = np.asarray(series).reshape(shape)
              obj[name] = (dims, data)
          return obj