tamnd / tamnd/firepanda

F. Reshaping

Open
#162 0 comments 0 reactions 0 assignees View on GitHub
area/frame parity
Dominant language
Mojo
Stars
1
Forks
0
PR merge metrics
PR metrics pending

Description

16 callables in the top level and method forms: `melt`, `pivot`, `pivot_table`, `stack`, `unstack`, `wide_to_long`, `crosstab`, `get_dummies`, `from_dummies`, `transpose`, `squeeze` and the rest of that family.

This one benefits most from A1 and A2 being finished, because `unstack` and `pivot` are index operations wearing a reshape hat. `unstack` moves an index level into columns, `stack` moves columns into an index level, and both of them produce a `MultiIndex` most of the time. Attempting these before the index work means writing them twice.

### Done when

- [ ] `melt` and `wide_to_long`, which are the pure ones and need no index machinery
- [ ] `stack` and `unstack` including the `level` parameter, the null filling behaviour, and the dtype rules when unstacking produces missing cells
- [ ] `pivot` and `pivot_table`, with `aggfunc`, `margins`, `dropna` and `fill_value`
- [ ] `crosstab`, `get_dummies` and `from_dummies`
- [ ] L3 at 100 percent

### How this is measured

The target above is an L3 rate over this workstream's callables, reported by `pixi run conformance` in [firepanda-compat](https://github.com/tamnd/firepanda-compat) and enforced by the CI ratchet rather than by a person ticking a box. L3 means every parameter takes every one of its values and the combinations that interact are enumerated. The levels are defined in [01-what-100-percent-means.md](https://github.com/tamnd/firepanda-compat/blob/main/docs/specs/01-what-100-percent-means.md), the counts come from [02-the-surface.md](https://github.com/tamnd/firepanda-compat/blob/main/docs/specs/02-the-surface.md), and the ordering argument for this milestone is in [08-m6.md](https://github.com/tamnd/firepanda-compat/blob/main/docs/specs/08-m6.md).

Anything we deliberately will not do goes in the divergence registry with a reason before this issue closes, and a registered divergence still runs and still has to diverge.

Part of #8, milestone M6.

Contributor guide

Open the contributing guide

Research direction

Read the ordering rationale in firepanda-compat/docs/specs/08-m6.md, then review the callable counts and L3 definition in docs/specs/01-what-100-percent-means.md and docs/specs/02-the-surface.md. Run `pixi run conformance` to establish the baseline. Done means the listed reshape callables reach 100% L3, with deliberate divergences registered and still tested.

Written by the indexing model from the issue text.

Assessment

Tech stack
pandas
Domain
data
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.