docstr: The row principal coordinates.
docstr_tok: ["The","row","principal","coordinates","."]
code: def row_coordinates(self, X):
      """The row principal coordinates."""
  
      _, row_names, _, _ = utils.make_labels_and_names(X)
      index_name = X.index.name
  
      if isinstance(X, pd.DataFrame):
          try:
              X = X.sparse.to_coo().astype(float)
          except AttributeError:
              X = X.to_numpy()
  
      if self.copy:
          X = X.copy()
  
      # Normalise the rows so that they sum up to 1
      if isinstance(X, np.ndarray):
          X = X / X.sum(axis=1)[:, None]
      else:
          X = X / X.sum(axis=1)
  
      return pd.DataFrame(
          data=X
          @ sparse.diags(self.col_masses_.to_numpy() ** -0.5)
          @ self.svd_.V.T,
          index=pd.Index(row_names, name=index_name),
      )
  
imports: from __future__ import annotations
  import functools
  import altair
  import numpy
  import pandas
  from scipy import sparse
  from sklearn.utils import check_array
  from prince import svd, utils
label_desc: Use image node_id 4 for calling the CA obj's underlying member method code with example usage: obj.row_coordinates(X) and returns: pd