--- name: melt kind: function lang: py domain: datascience version: "1.0.0" purity: pure signature: "def melt(rows: list[dict], id_vars: list[str], value_vars: list[str] | None = None, var_name: str = 'variable', value_name: str = 'value') -> list[dict]" description: "Inversa de pivot. Convierte columnas en filas (formato largo). Cada combinacion de id_vars + value_var genera una fila. Si value_vars es None, derrite todas las columnas no-id." tags: [datascience, tabular, melt, unpivot, transform, python] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "" imports: [] params: - name: rows desc: "lista de dicts en formato ancho (ej: [{'region': 'US', 'q1': 10, 'q2': 20}])" - name: id_vars desc: "lista de columnas a mantener como identificadores (ej: ['region']). No se derriten." - name: value_vars desc: "lista de columnas a derretir (ej: ['q1', 'q2']). Si None, derrite todas excepto id_vars." - name: var_name desc: "nombre de la columna que contendra los nombres de columnas derretidas (defecto: 'variable')" - name: value_name desc: "nombre de la columna que contendra los valores (defecto: 'value')" output: "lista de dicts en formato largo, donde cada id_var + value_var genera una fila" tested: true tests: - "Melt basico" - "Multiples id_vars" - "value_vars None derrite todas las columnas no-id" - "Fila con campo faltante en value_vars" test_file_path: "python/functions/datascience/melt_test.py" file_path: "python/functions/datascience/melt.py" --- ## Ejemplo ```python rows = [{"region": "US", "q1": 10, "q2": 20}] melt(rows, id_vars=["region"], value_vars=["q1", "q2"]) # [{"region": "US", "variable": "q1", "value": 10}, # {"region": "US", "variable": "q2", "value": 20}] ``` ## Notas Funcion pura sin dependencias externas. Si un campo de value_vars no existe en la fila, su valor sera None. El parametro value_vars=None es util cuando se desconoce el schema exacto.