class_docstr: Converts features in PandasDataFrame to VW format
  Ref: https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Input-format
docstr: Converts features to VW format.
  :param X: features
  :param feature_metadata: schema of X
  :return: Returns a series of features converted to VW format
code: def convert_features_to_vw_format(
      self, X, feature_metadata
  ) -> pd.Series:
      """
      Converts features to VW format.
      :param X: features
      :param feature_metadata: schema of X
      :return: Returns a series of features converted to VW format
      """
  
      X_out: pd.Series = None
  
      for feature in feature_metadata:
          raw_feature, special_feature = feature_metadata[feature]
          if X_out is None:
              X_out = (
                  self.PIPE
                  + self.SPACE
                  + self.__generate_namespace_based_on_ml_type(
                      X[feature], raw_feature, special_feature, feature
                  ).astype("str")
                  + self.SPACE
              )
          else:
              X_out += (
                  ""
                  + self.SPACE
                  + self.__generate_namespace_based_on_ml_type(
                      X[feature], raw_feature, special_feature, feature
                  ).astype("str")
                  + self.SPACE
              )
      return X_out
  
file_path: autogluon/tabular/src/autogluon/tabular/models/vowpalwabbit/vowpalwabbit_utils.py
imports: import pandas
  from autogluon.common.features.types import R_CATEGORY, R_FLOAT, R_INT, S_TEXT
label_desc: Use image node_id 1 for calling the VWFeaturesConverter obj's underlying member method code with example usage: obj.convert_features_to_vw_format(X, feature_metadata) and returns: X_out