docs: def to_xyz(self, buf=None, sort_index=True,
                 index=False, header=False, float_format='{:.6f}'.format,
                 overwrite=True):
          """Write xyz-file
  
          Args:
              buf (str): StringIO-like, optional buffer to write to
              sort_index (bool): If sort_index is true, the
                  :class:`~chemcoord.Cartesian`
                  is sorted by the index before writing.
              float_format (one-parameter function): Formatter function
                  to apply to column’s elements if they are floats.
                  The result of this function must be a unicode string.
              overwrite (bool): May overwrite existing files.
  
          Returns:
              formatted : string (or unicode, depending on data and options)
          """
          if sort_index:
              molecule_string = self.sort_index().to_string(
                  header=header, index=index, float_format=float_format)
          else:
              molecule_string = self.to_string(header=header, index=index,
                                               float_format=float_format)
  
          # NOTE the following might be removed in the future
          # introduced because of formatting bug in pandas
          # See https://github.com/pandas-dev/pandas/issues/13032
          space = ' ' * (self.loc[:, 'atom'].str.len().max()
                         - len(self.iloc[0, 0]))
  
          output = '{n}\n{message}\n{alignment}{frame_string}'.format(
              n=len(self), alignment=space, frame_string=molecule_string,
              message='Created by chemcoord http://chemcoord.readthedocs.io/')
  
          if buf is not None:
              if overwrite:
                  with open(buf, mode='w') as f:
                      f.write(output)
              else:
                  with open(buf, mode='x') as f:
                      f.write(output)
          else:
              return output