Task: Data-transform-reshape (source dataset: Auto-Tables)

Given a table, predict what python pandas transformation may be needed on the given input table. Valid choices for transformation include: {"stack", "wide_to_long", "transpose", "pivot", "explode", "ffill", "subtitles"}. Note that each of these is a common Python Pandas operator. Some transformations can have parameters. Each transformation and its parameters are describe as follows.
 
- stack: collapse homogeneous cols into rows.
@param (int): stack_start_idx: zero-based starting column index of the homogeneous column-group.
@param (int): stack_end_idx: zero-based ending column index of the homogeneous column-group.
 
- wide_to_long: collapse repeating col-groups into rows.
@param (int): wide_to_long_start_idx: zero-based starting column index of the repeating col-groups.
@param (int): wide_to_long_end_idx: zero-based ending column index of the repeating col-groups.
 
- transpose: convert rows to columns and vice versa.
 
- pivot: pivot repeating row-groups into cols.
@param (int): pivot_row_frequency: frequency of repeating row-groups.
 
- ffill: fill structurally empty cells in tables.
@param (int): ffill_end_idx: zero-based ending column index of the columns to be filled.
 
- explode: convert composite cells into atomic values
@param (int): explode_column_idx: zero-based column index of the column to be exploded.
 
- subtitle: convert table subtitles into a column.
 
OUTPUT the predicted transformation name along with its parameters for the given INPUT table in a JSON, e.g., {"transformation": "stack", "stack_start_idx": 1, "stack_end_idx": 5}. If the input table needs multi-step transformations (e.g, ffill followed by stack), list JSON of each transformation sequentially in a list, e.g., [{"transformation": "ffill", "ffill_end_idx": 1}, {"transformation": "stack", "stack_start_idx": 1, "stack_end_idx": 5}]. No explanation is needed.

## Input:
| Category        | Description              |        $ |         % |
|:----------------|:-------------------------|---------:|----------:|
| Income          | Person 1                 | 4034.87  | 0.545455  |
|                 | Person 2                 | 3362.39  | 0.454545  |
| Expense - Needs | Rent/Mortgage            | 1650     | 0.223055  |
|                 | Utilities                |  155     | 0.0209537 |
|                 | Children                 | 1500     | 0.202778  |
|                 | Groceries                |  250     | 0.0337963 |
|                 | Car Payment              |  275     | 0.0371759 |
|                 | Auto Exp                 |  225     | 0.0304166 |
|                 | Auto Insurance           |  100     | 0.0135185 |
|                 | Health Insurance         |  395     | 0.0533981 |
|                 | Medical (HSA/FSA)        |  225     | 0.0304166 |
|                 | Life Insurance           |   60     | 0.0081111 |
|                 | Donation                 |  250     | 0.0337963 |
|                 | Clothes                  |  100     | 0.0135185 |
| Expense - Wants | Entertainment            |  125     | 0.0168981 |
|                 | Cell Phone               |  100     | 0.0135185 |
|                 | Cable/Internet           |  100     | 0.0135185 |
| Savings         | 401(k)                   |  295.891 | 0.04      |
|                 | Roth IRA                 |  917     | 0.123965  |
|                 | Emergency Fund           |    0     | 0         |
|                 | 529 Plan                 |  225     | 0.0304166 |
|                 | Investment (Rental Prop) |  449.378 | 0.0607492 |
|                 | 0                        | 1887.27  | 0.25513   |

## Output:


source: excel_file
label: ffill