Reshape

Wide-to-long reshaping helpers.

Reshape helpers for the wide-format DataFrame returned by get_all_features.

to_long_format(df, *, join_metadata=True, metadata=None)[source]

Reshape a wide-format feature DataFrame into tidy long format.

Parameters:
  • df (pd.DataFrame) – A wide-format DataFrame as returned by get_all_features, with melody_num/melody_id identifier columns and one {family}.{feature} column per feature.

  • join_metadata (bool, optional) – If True (default), left-join feature metadata (family, source, domain, type, description, notes, references) onto the long DataFrame by feature_name. Any feature_name without an exact metadata match (chiefly dynamic IDyOM columns) falls back to a family/source inferred from the column prefix rather than being left blank.

  • metadata (pd.DataFrame, optional) – A metadata table to join instead of the default melody_features.get_feature_metadata() table (for example, a filtered or user-extended version). Must contain a feature_name column plus any of the columns in family, source, domain, type, description, notes, references.

Returns:

Columns: melody_num, melody_id, feature_name, value, and (when join_metadata=True) family, source, domain, type, description, notes, references.

Return type:

pd.DataFrame