code: def get_cartesian(self):
          
          def create_cartesian(positions, row):
              xyz_frame = pd.DataFrame(columns=['atom', 'x', 'y', 'z'],
                                       index=self.index[:row], dtype='f8')
              xyz_frame['atom'] = self.loc[xyz_frame.index, 'atom']
              xyz_frame.loc[:, ['x', 'y', 'z']] = positions[:row]
              from chemcoord.cartesian_coordinates.cartesian_class_main \
                  import Cartesian
              cartesian = Cartesian(xyz_frame, metadata=self.metadata)
              return cartesian
  
          c_table = self.loc[:, ['b', 'a', 'd']]
          c_table = c_table.replace(constants.int_label)
          c_table = c_table.replace({k: v for v, k in enumerate(c_table.index)})
          c_table = c_table.values.astype('i8').T
  
          C = self.loc[:, ['bond', 'angle', 'dihedral']].values.T
          C[[1, 2], :] = np.radians(C[[1, 2], :])
  
          err, row, positions = transformation.get_X(C, c_table)
          positions = positions.T
  
          if err == ERR_CODE_InvalidReference:
              rename = dict(enumerate(self.index))
              i = rename[row]
              b, a, d = self.loc[i, ['b', 'a', 'd']]
              cartesian = create_cartesian(positions, row)
              raise InvalidReference(i=i, b=b, a=a, d=d,
                                     already_built_cartesian=cartesian)
          elif err == ERR_CODE_OK:
              return create_cartesian(positions, row + 1)
docs: Return the molecule in cartesian coordinates.
  
          Raises an :class:`~exceptions.InvalidReference` exception,
          if the reference of the i-th atom is undefined.
  
          Args:
              None
  
          Returns:
              Cartesian: Reindexed version of the zmatrix.