code: def partial_row_coordinates(self, X):
          
          utils.validation.check_is_fitted(self, 's_')
  
          # Check input
          if self.check_input:
              utils.check_array(X, dtype=[str, np.number])
  
          # Prepare input
          X = self._prepare_input(X)
  
          # Define the projection matrix P
          P = len(X) ** 0.5 * self.U_ / self.s_
  
          # Get the projections for each group
          coords = {}
          for name, cols in sorted(self.groups.items()):
              X_partial = X.loc[:, cols]
  
              if not self.all_nums_[name]:
                  X_partial = self.cat_one_hots_[name].transform(X_partial)
  
              Z_partial = X_partial / self.partial_factor_analysis_[name].s_[0]
              coords[name] = len(self.groups) * (Z_partial @ Z_partial.T) @ P
  
          # Convert coords to a MultiIndex DataFrame
          coords = pd.DataFrame({
              (name, i): group_coords.loc[:, i]
              for name, group_coords in coords.items()
              for i in range(group_coords.shape[1])
          })
  
          return coords
docs: Returns the row coordinates for each group.