code: def __init__(
      self,
      data=None,
      index=None,
      columns=None,
      dtype=None,
      copy=False,
      name=None,
      *args,
      **kwargs,
  ):
      super().__init__(
          data,
          index=index,
          dtype=dtype,
          copy=copy,
          name=None,
          columns=None,
          *args,
          **kwargs,
      )
      if isinstance(self.orig_data, dict):
          # if data is a dict the underlying array needs to be extended to match the
          # index as a 2d array
          self.columns = (
              list(self.orig_data.keys())
              if columns is None
              else columns
          )
          array_data = list(self.orig_data.values())
          self.array = ivy.array(
              [array_data for _ in range(len(self.index))]
          )
      elif isinstance(self.orig_data, Series):
          self.array = self.array.expand_dims()
          self.columns = [0]
      elif columns is None:
          self.columns = ivy.arange(self.array.shape[1]).tolist()
      else:
          self.columns = columns
  
      assert (
          self.array.ndim == 2
      ), "DataFrame Data must be 2-dimensional"
  
file_path: ivy/ivy/functional/frontends/pandas/dataframe.py
imports: from .generic import NDFrame
  import ivy
  from .series import Series
  from ivy.functional.frontends.pandas.index import Index
label_desc: Use image node_id 1 to create a new DataFrame object from inherited base classes: NDFrame with example: obj = DataFrame(data, index, columns, dtype, copy, name)